class GemConfig::Configuration
Public Class Methods
new(parent = nil)
click to toggle source
# File lib/gem_config/configuration.rb, line 3 def initialize(parent = nil) @parent = parent end
Public Instance Methods
current()
click to toggle source
# File lib/gem_config/configuration.rb, line 11 def current self.rules.keys.each_with_object({}) do |key, hash| hash[key] = get(key) end end
method_missing(method, *args, &block)
click to toggle source
Calls superclass method
# File lib/gem_config/configuration.rb, line 29 def method_missing(method, *args, &block) case when self.rules.keys.include?(method.to_sym) get method when (match = method.to_s.match(/\A(?<key>\w+)=\z/)) && self.rules.keys.include?(match[:key].to_sym) set match[:key], args.first else super end end
reset()
click to toggle source
# File lib/gem_config/configuration.rb, line 17 def reset self.rules.keys.each do |key| unset key end end
rules()
click to toggle source
# File lib/gem_config/configuration.rb, line 7 def rules @rules ||= Rules.new end
unset(key)
click to toggle source
# File lib/gem_config/configuration.rb, line 23 def unset(key) raise InvalidKeyError, "#{key} is not a valid key." unless self.rules.keys.include?(key.to_sym) remove_instance_variable "@#{key}" if instance_variable_defined?("@#{key}") call_after_configuration_change end
Private Instance Methods
call_after_configuration_change()
click to toggle source
# File lib/gem_config/configuration.rb, line 58 def call_after_configuration_change unless @parent.nil? after_configuration_change = @parent.instance_variable_get(:@after_configuration_change) after_configuration_change.call unless after_configuration_change.nil? end end
get(key)
click to toggle source
# File lib/gem_config/configuration.rb, line 49 def get(key) case when instance_variable_defined?("@#{key}") instance_variable_get "@#{key}" when self.rules[key.to_sym].key?(:default) set key, self.rules[key.to_sym][:default] end end
set(key, value)
click to toggle source
# File lib/gem_config/configuration.rb, line 42 def set(key, value) self.rules.check(key, value) instance_variable_set "@#{key}", value call_after_configuration_change value end