module Dry::Configurable::ClassMethods
def self.extended(base)
- Private: -
def self.extended(base) base.instance_exec do @settings = Settings.new end end
def _settings
- Private: - no, really...
def _settings @settings end
def inherited(subclass)
- Private: -
def inherited(subclass) parent = self subclass.instance_exec do @settings = parent._settings.dup end if singleton_class < Configurable parent_config = @config subclass.instance_exec do @config = _settings.create_config @config.define!(parent_config.to_h) if parent_config.defined? end end super end
def raise_already_defined_config(key)
- Private: -
def raise_already_defined_config(key) raise AlreadyDefinedConfig, "Cannot add setting +#{key}+, #{self} is already configured" end
def setting(key, value = Undefined, options = Undefined, &block)
- Api: - public
Returns:
-
(Dry::Configurable::Config)
-
Other tags:
- Yield: -
Parameters:
-
default
(Mixed
) -- -
key
(Mixed
) --
def setting(key, value = Undefined, options = Undefined, &block) extended = singleton_class < Configurable raise_already_defined_config(key) if _settings.config_defined? setting = _settings.add(key, value, options, &block) if setting.reader? readers = extended ? singleton_class : self readers.send(:define_method, setting.name) { config[setting.name] } end end
def settings
- Api: - public
Returns:
-
(Set)
-
def settings _settings.names end