Class: JIJI::Configuration

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

Overview

設定値

Instance Method Summary collapse

Constructor Details

#initialize(configuration_file = nil) ⇒ Configuration

コンストラクタ

configuration_file

設定ファイルのパス



14
15
16
17
# File 'lib/jiji/configuration.rb', line 14

def initialize( configuration_file=nil )
  @configuration_file=configuration_file
  load
end

Instance Method Details

#get(names, default) ⇒ Object

値を取得する。

names

値を示すパス 例) [:foo, :var]

default

値が存在しない場合の初期値

return



35
36
37
38
39
40
41
42
43
44
# File 'lib/jiji/configuration.rb', line 35

def get( names, default )
  v = names.inject(@conf) {|conf,i|
    if conf.kind_of?(Hash)
      conf[i]
    else
      break default
    end
  }
  v == nil ? default : v
end

#key?(names) ⇒ Boolean

値が存在するか評価する。

names

値を示すパス 例) [:foo, :var]

return

値があればtrue

Returns:

  • (Boolean)


66
67
68
69
70
71
72
73
74
75
# File 'lib/jiji/configuration.rb', line 66

def key?( names )
  v = names.inject(@conf) {|conf,i|
    if conf.kind_of?(Hash)
      conf[i]
    else
      break nil
    end
  }
  v != nil
end

#loadObject

データをロードする



20
21
22
23
24
25
26
27
28
29
# File 'lib/jiji/configuration.rb', line 20

def load
  if @configuration_file && File.exist?( @configuration_file )
    FileLock.new( @configuration_file ).readlock {|f|
      tmp = YAML.load f
      @conf = key_to_sym( tmp )
    }
  else
    @conf = {}
  end
end

#set(names, value = nil) ⇒ Object

値を設定する。 ※設定した値は元のファイルには反映されない。プログラムを終了すると失われる。

names

値を示すパス 例) [:foo, :var]

value



50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/jiji/configuration.rb', line 50

def set( names, value=nil)
  key = names.pop
  names.inject(@conf) {|conf, i|
    if conf[i].kind_of?(Hash)
      conf[i]
    elsif conf[i] == nil
      conf[i] = {}
    else
      raise "illegal key."
    end
  }[key] = value
end