module Dry::Configurable
def self.extended(base)
- Private: -
def self.extended(base) base.class_eval do @_config_mutex = ::Mutex.new @_settings = ::Concurrent::Array.new end end
def _config_for(&block)
- Private: -
def _config_for(&block) config_klass = ::Class.new { extend ::Dry::Configurable } config_klass.instance_eval(&block) config_klass.config end
def _settings
- Private: - no, really...
def _settings @_settings end
def config
- Api: - public
Returns:
-
(Dry::Configurable::Config)
-
def config return @_config if defined?(@_config) create_config end
def configure
- Api: - public
Returns:
-
(Dry::Configurable::Config)
-
Other tags:
- Yield: -
def configure yield(config) if block_given? end
def create_config
- Private: -
def create_config @_config_mutex.synchronize do @_config = ::Dry::Configurable::Config.create(_settings) unless _settings.empty? end end
def enable_test_interface
- Api: - public
def enable_test_interface extend Dry::Configurable::TestInterface end
def inherited(subclass)
- Private: -
def inherited(subclass) subclass.instance_variable_set(:@_config_mutex, ::Mutex.new) subclass.instance_variable_set(:@_settings, @_settings.clone) subclass.instance_variable_set(:@_config, @_config.clone) if defined?(@_config) super end
def setting(key, value = ::Dry::Configurable::Config::Value::NONE, &block)
- Api: - public
Returns:
-
(Dry::Configurable::Config)
-
Other tags:
- Yield: -
Parameters:
-
default
(Mixed
) -- -
key
(Mixed
) --
def setting(key, value = ::Dry::Configurable::Config::Value::NONE, &block) if block if block.parameters.empty? value = _config_for(&block) else processor = block end end _settings << ::Dry::Configurable::Config::Value.new( key, value, processor || ::Dry::Configurable::Config::DEFAULT_PROCESSOR ) end
def settings
- Api: - public
Returns:
-
(Array)
-
def settings _settings.map(&:name) end