Method: Confix::InstanceMethods#set
- Defined in:
- lib/confix.rb
#set(key, *value) ⇒ Object Also known as: []=
Sets a setting by the given key.
If the key refers to a child configuration, an exception is returned.
212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 |
# File 'lib/confix.rb', line 212 def set(key, *value) if value.length == 0 && key.is_a?(Hash) # Apply the hash to the settings. key.each { |key, value| set key, value } else raise ArgumentError, 'too many arguments (1 or 2 expected)' if value.length > 1 value = value.first key = key.to_s if self.class.configs[key] raise CannotModifyConfiguration, "you cannot update a child configuration with anything else than a hash" unless value.is_a?(Hash) config = (config_root.configs[self.class.(key)] ||= self.class.configs[key].new(self)) config.update value elsif child? raise UndefinedSetting, "setting '#{self.class.(key)}' does not exist" unless self.class.key_defined?(key) config_root.values[self.class.(key)] = value else raise UndefinedSetting, "setting '#{self.class.(key)}' does not exist" unless self.class.key_defined?(key) values[key] = value end end end |