module Dry::Configurable::ClassMethods

def self.define(name)

def self.define(name)
  define_method(name) do
    config[name]
  end
end

def __config_dsl__

Other tags:
    Api: - private
def __config_dsl__
  @__config_dsl__ ||= DSL.new
end

def __config_reader__

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

Other tags:
    Api: - public

Returns:
  • (Settings) -
def _settings
  @_settings ||= Settings.new
end

def config

Other tags:
    Api: - public

Returns:
  • (Config) -
def config
  @config ||= Config.new(_settings)
end

def inherited(klass)

Other tags:
    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, **options, &block)

Other tags:
    Api: - public

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

Other tags:
    Yield: -

Parameters:
  • reader (Boolean) --
  • constructor (#call) --
  • default (Mixed) --
  • name (Mixed) --
def setting(*args, **options, &block)
  setting = __config_dsl__.setting(*args, **options, &block)
  _settings << setting
  __config_reader__.define(setting.name) if setting.reader?
  self
end

def settings

Other tags:
    Api: - public

Returns:
  • (Set) -
def settings
  @settings ||= Set[*_settings.map(&:name)]
end