module Dry::Configurable::ClassMethods
def self.define(name)
def self.define(name) define_method(name) do config[name] end end
def __config_dsl__
- Api: - private
def __config_dsl__ @dsl ||= DSL.new end
def __config_reader__
- Api: - private
def __config_reader__ @__config_reader__ ||= begin reader = Module.new do def self.define(name) define_method(name) do config[name] end end end if included_modules.include?(InstanceMethods) include(reader) end extend(reader) reader end end
def _settings
- Api: - public
Returns:
-
(Settings)
-
def _settings @_settings ||= Settings.new end
def config
- Api: - public
Returns:
-
(Config)
-
def config @config ||= Config.new(_settings) end
def inherited(klass)
- Api: - private
def inherited(klass) super parent_settings = (respond_to?(:config) ? config._settings : _settings) klass.instance_variable_set('@_settings', parent_settings) end
def setting(*args, &block)
- Api: - public
Returns:
-
(Dry::Configurable::Config)
-
Other tags:
- Yield: -
Parameters:
-
default
(Mixed
) -- -
key
(Mixed
) --
def setting(*args, &block) setting = __config_dsl__.setting(*args, &block) _settings << setting __config_reader__.define(setting.name) if setting.reader? self end
def settings
- Api: - public
Returns:
-
(Set
-)
def settings @settings ||= Set[*_settings.map(&:name)] end