module Dry::Configurable
def self.extended(base)
- Private: -
def self.extended(base) base.instance_variable_set(:@_config_mutex, Mutex.new) base.instance_variable_set(:@_settings_mutex, Mutex.new) 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: -
def _settings @_settings_mutex.synchronize { @_settings ||= ThreadSafe::Cache.new } end
def config
- Api: - public
Returns:
-
(Dry::Configurable::Config)
-
def config @_config_mutex.synchronize do return @_config if defined?(@_config) @_config = Config.new(*_settings.keys).new(*_settings.values) unless _settings.empty? end end
def configure
- Api: - public
Returns:
-
(Dry::Configurable::Config)
-
Other tags:
- Yield: -
def configure yield(config) if block_given? end
def setting(key, default = nil, &block)
- Api: - public
Returns:
-
(Dry::Configurable::Config)
-
Other tags:
- Yield: -
Parameters:
-
default
(Mixed
) -- -
key
(Mixed
) --
def setting(key, default = nil, &block) default = _config_for(&block) if block_given? _settings[key] = default end