class ROM::Configurable::Config
Constants
- WRITER_REGEXP
Attributes
settings[R]
@!attribute [r] settings
@return [Hash] A hash with defined settings
Public Class Methods
new(settings = {})
click to toggle source
@api private
# File lib/rom/support/configurable.rb, line 17 def initialize(settings = {}) @settings = settings end
Public Instance Methods
[](name)
click to toggle source
Return a setting
@return [Mixed]
@api public
# File lib/rom/support/configurable.rb, line 26 def [](name) public_send(name) end
dup()
click to toggle source
@api private
# File lib/rom/support/configurable.rb, line 45 def dup self.class.new(dup_settings(settings)) end
key?(name)
click to toggle source
@api private
# File lib/rom/support/configurable.rb, line 31 def key?(name) settings.key?(name) end
respond_to_missing?(_name, _include_private = false)
click to toggle source
@api private
# File lib/rom/support/configurable.rb, line 40 def respond_to_missing?(_name, _include_private = false) true end
to_hash()
click to toggle source
# File lib/rom/support/configurable.rb, line 35 def to_hash settings end
Private Instance Methods
dup_settings(settings)
click to toggle source
# File lib/rom/support/configurable.rb, line 51 def dup_settings(settings) settings.each_with_object({}) do |(key, value), new_settings| if value.is_a?(self.class) new_settings[key] = value.dup else new_settings[key] = value end end end
method_missing(meth, *args, &_block)
click to toggle source
@api private
# File lib/rom/support/configurable.rb, line 62 def method_missing(meth, *args, &_block) return settings.fetch(meth, nil) if frozen? name = meth.to_s key = name.gsub(WRITER_REGEXP, '').to_sym if writer?(name) settings[key] = args.first else settings.fetch(key) { settings[key] = self.class.new } end end
writer?(name)
click to toggle source
@api private
# File lib/rom/support/configurable.rb, line 76 def writer?(name) !WRITER_REGEXP.match(name).nil? end