Class: FieldReports::Bridge

Inherits:
Object
  • Object
show all
Defined in:
lib/field_reports.rb

Overview

Field Reportsと連携するためのProxyオブジェクトを生成します。

Class Method Summary collapse

Class Method Details

.create_exec_proxy(exe_path = "reports", cwd = ".", loglevel = 0, logout = STDERR) ⇒ ExecProxy

Field Reportsとコマンド呼び出しにより連携するためのProxyオブジェクトを生成します。

Parameters:

  • exe_path (String) (defaults to: "reports")

    Field Reportsコマンドのパス

  • cwd (String) (defaults to: ".")

    Field Reportsプロセス実行時のカレントディレクトリ

  • loglevel (Integer) (defaults to: 0)

    ログ出力レベル

  • logout (IO) (defaults to: STDERR)

    ログ出力先Stream

Returns:

  • (ExecProxy)

    Field Reports Proxyオブジェクト



67
68
69
70
71
72
# File 'lib/field_reports.rb', line 67

def self.create_exec_proxy(
  exe_path = "reports",
  cwd = ".",
  loglevel = 0, logout = STDERR)
  return ExecProxy.new(exe_path, cwd, loglevel, logout)
end

.create_http_proxy(base_address = "http://localhost:50080/") ⇒ HttpProxy

Note:

reportsコマンドがサーバーモードで起動していることが前提となります。 $ reports server -l3

Field ReportsとHTTPで連携するためのProxyオブジェクトを生成します。

Parameters:

  • base_address (String) (defaults to: "http://localhost:50080/")

    ベースURI

Returns:

  • (HttpProxy)

    Field Reports Proxyオブジェクト



81
82
83
84
# File 'lib/field_reports.rb', line 81

def self.create_http_proxy(
  base_address = "http://localhost:50080/")
  return HttpProxy.new(base_address)
end

.create_proxy(uri = nil) ⇒ Proxy

Field Reportsと連携するためのProxyオブジェクトを生成します。

Examples:

コマンド連携時

require "field_reports"
reports = FieldReports::Bridge.create_proxy("exec:/usr/local/bin/reports?cwd=/usr/share&logleve=3")

HTTP連携時

require "field_reports"
reports = FieldReports::Bridge.create_proxy("http://localhost:50080/")

Parameters:

  • uri (String) (defaults to: nil)

    Field Reportsとの接続方法を示すURI.

    nilの場合,環境変数'REPORTS_PROXY'よりURIを取得します。

    環境変数'REPORTS_PROXY'も未設定の場合の既定値は,“exec:reports”です。

    書式(コマンド連携時):

    exec:{exePath}?cwd={cwd}&loglevel={logLevel}
    
    • cwd, loglevelは省略可能です。

    • loglevelが0より大きい場合,標準エラー出力にログを出力します。

    書式(HTTP連携時):

    http://{hostName}:{portNumber}/
    

Returns:

  • (Proxy)

    Field Reports Proxyオブジェクト



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/field_reports.rb', line 42

def self.create_proxy(uri = nil)
  uri = uri.nil? ? ENV['REPORTS_PROXY'] : uri
  uri = uri.nil? ? "exec:reports" : uri
  if uri.start_with?("exec:") then
    uris = uri[5..-1].split("?")
    if uris.length == 2 then
      q = URI.decode_www_form(uris[1]).to_h
      cwd = q.has_key?('cwd') ? q['cwd'] : "."
      loglevel = q.has_key?('loglevel') ? q['loglevel'].to_i : 0
      return Bridge.create_exec_proxy(uris[0], cwd, loglevel, STDERR)
    else
      return Bridge.create_exec_proxy(uris[0], ".", 0, STDERR)
    end
  else
    return Bridge.create_http_proxy(uri)
  end
end