class Pione::Global::Config
Config
is a class for setting PIONE system configuration.
Attributes
path[R]
config file path
Public Class Methods
load(path)
click to toggle source
Load configuration and apply it to global settings.
# File lib/pione/global/config.rb, line 6 def self.load(path) new(path).tap {|x| x.apply} end
new(path)
click to toggle source
Create a new configuration.
# File lib/pione/global/config.rb, line 16 def initialize(path) @path = Pathname.new(path) @table = Hash.new (@path.exist? ? JSON.load(@path.read) : {}).each do |key, val| @table[key.to_sym] = val end raise InvalidConfigFile.new(@path) unless @table.kind_of?(Hash) end
Public Instance Methods
apply()
click to toggle source
Apply config date to global settings.
# File lib/pione/global/config.rb, line 26 def apply @table.each do |key, val| name = key.to_sym if_configurable_item(name) do Global.set(name, val) end end end
get(name)
click to toggle source
Get the global item’s value.
@param name [String]
item name
@return [Object]
item value
# File lib/pione/global/config.rb, line 57 def get(name) name = name.to_sym if_configurable_item(name) do @table[name] end end
save(path=@path)
click to toggle source
Save the configuration items to the file.
@param path [Pathname]
file path
@return [void]
# File lib/pione/global/config.rb, line 74 def save(path=@path) path.open("w+") do |file| file.write(JSON.pretty_generate(@table)) end end
set(name, value)
click to toggle source
Set the global item.
@param name [String]
item name
@param value [Object]
item value
@return [void]
# File lib/pione/global/config.rb, line 42 def set(name, value) raise ArgumentError.new if value.nil? name = name.to_sym if_configurable_item(name) do @table[name] = ValueConverter.convert(Global.item[name].type, value) end end
unset(name)
click to toggle source
# File lib/pione/global/config.rb, line 64 def unset(name) name = name.to_sym @table.delete(name) end
Private Instance Methods
if_configurable_item(name, &b)
click to toggle source
# File lib/pione/global/config.rb, line 82 def if_configurable_item(name, &b) if Global.item[name] and Global.item[name].configurable? b.call else raise UnconfigurableVariableError.new(name) end end