module Knowledge::Configurable::ClassMethods

Class Methods to be injected.

Public Instance Methods

[](name) click to toggle source

Syntaxic sugar allowing to access a config var.

Usage

@example

MyModule[:my_variable] # :foo

Parameters

@param name [String, Symbol]

@return the value of the config var

# File lib/knowledge/configurable.rb, line 96
def [](name)
  configuration.public_send(name.to_sym)
end
[]=(name, value) click to toggle source

Syntaxic sugar allowing to set a config var.

Usage

@example

MyModule[:my_variable] = :foo # :foo

Parameters

@param name [String, Symbol] @param value [any]

@return the value of the config var

# File lib/knowledge/configurable.rb, line 116
def []=(name, value)
  configuration.public_send("#{name}=", value)
end
configure() { |configuration| ... } click to toggle source

Exposes the configuration allowing to manage it.

Usage

@example

MyModule.configure do |config|
  config.my_variable = :foo
end

Parameters

@yield configuration [Config]

# File lib/knowledge/configurable.rb, line 77
def configure
  yield configuration
end
setting(name, default: nil) click to toggle source

Registers a configuration variable with a potential default value

Usage

@example

setting :my_config
setting :environment, default: :development

Parameters

@param name [String, Symbol] the variable's name @param default [any] default value for the variable to define

# File lib/knowledge/configurable.rb, line 55
def setting(name, default: nil)
  configuration.class.send(:attr_accessor, name)
  configuration.public_send("#{name}=", default)

  singleton_class.class_eval { def_delegators :configuration, name, "#{name}=" }
end

Private Instance Methods

configuration() click to toggle source

@return [Config]

# File lib/knowledge/configurable.rb, line 130
def configuration
  @configuration ||= Config.new
end