module Dry::Configurable

def self.extended(base)

Other tags:
    Private: -
def self.extended(base)
  base.class_eval do
    @_config_mutex = ::Mutex.new
    @_settings = ::Concurrent::Array.new
  end
end

def _config_for(&block)

Other tags:
    Private: -
def _config_for(&block)
  config_klass = ::Class.new { extend ::Dry::Configurable }
  config_klass.instance_eval(&block)
  config_klass.config
end

def _settings

Other tags:
    Private: - no, really...
def _settings
  @_settings
end

def config

Other tags:
    Api: - public

Returns:
  • (Dry::Configurable::Config) -
def config
  return @_config if defined?(@_config)
  create_config
end

def configure

Other tags:
    Api: - public

Returns:
  • (Dry::Configurable::Config) -

Other tags:
    Yield: -
def configure
  yield(config) if block_given?
end

def create_config

Other tags:
    Private: -
def create_config
  @_config_mutex.synchronize do
    @_config = ::Dry::Configurable::Config.create(_settings) unless _settings.empty?
  end
end

def enable_test_interface

Other tags:
    Api: - public
def enable_test_interface
  extend Dry::Configurable::TestInterface
end

def inherited(subclass)

Other tags:
    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)

Other tags:
    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

Other tags:
    Api: - public

Returns:
  • (Array) -
def settings
  _settings.map(&:name)
end