Module: Sinclair::Configurable

Defined in:
lib/sinclair/configurable.rb

Overview

Module capable of giving configuration capability

By extending Configurable, class receives the methods public .config, .reset_config and .configure and the private .configurable_with

Examples:

class MyConfigurable
  extend Sinclair::Configurable

  # port is defaulted to 80
  configurable_with :host, port: 80
end

MyConfigurable.configure do
  host 'interstella.com'
  port 5555
end

MyConfigurable.config.host
# returns 'interstella.com'

MyConfigurable.config.port
# returns 5555

MyConfigurable.reset_config

MyConfigurable.config.host
# returns nil

MyConfigurable.config.port
# returns 80

See Also:

Instance Method Summary collapse

Instance Method Details

#config ⇒ Config, Object

Returns current instance of config

the method returns the same instance until reset_config is called

Examples:

General usage

factory = Sinclair::ConfigFactory.new
factory.add_configs(:name)
factory.configure { |c| c.name 'John' }

config = factory.config

config.class.superclass       # returns Sinclair::Config
factory.config.equal?(config) # returns true
config.name                   # returns 'John'

Returns:

  • (Config, Object) —

    the instance of given config_class. by default, this returns Class.new(Config).new

See Also:



45
46
47
# File 'lib/sinclair/configurable.rb', line 45

def config
  config_factory.config
end

#configurable_with(*attributes) ⇒ Array<Symbol>

Adds a configuration option to config class

Examples:

class MyConfigurable
  extend Sinclair::Configurable

  # port is defaulted to 80
  configurable_with :host, port: 80
end

MyConfigurable.configure do
  host 'interstella.com'
  port 5555
end

MyConfigurable.config.host
# returns 'interstella.com'

MyConfigurable.config.port
# returns 5555

MyConfigurable.reset_config

MyConfigurable.config.host
# returns nil

MyConfigurable.config.port
# returns 80

Returns:

  • (Array<Symbol>) —

    list of possible configurations

See Also:



97
98
99
# File 'lib/sinclair/configurable.rb', line 97

def configurable_with(*attributes)
  config_factory.add_configs(*attributes)
end

#configure {|ConfigBuilder| ... } ⇒ Object

Set the values in the config

The block given is evaluated by the Sinclair::ConfigBuilder where each method missed will be used to set a variable in the config

Examples:

Setting name on config

class MyConfig
  attr_reader :name
end

factory = Sinclair::ConfigFactory.new(
  config_class: MyConfig,
  config_attributes: [:name]
)

config = factory.config

factory.configure { name 'John' }

config.name # returns 'John'

Yields:

Returns:

  • (Object) —

    the result of the block

See Also:



57
58
59
# File 'lib/sinclair/configurable.rb', line 57

def configure(&block)
  config_factory.configure(&block)
end

#reset_config ⇒ NilClass

Cleans the current config instance

After cleaning it, #config will generate a new instance

Examples:

factory = Sinclair::ConfigFactory.new

config = factory.config

factory.reset_config

factory.config == config # returns false

Returns:

  • (NilClass)

See Also:



51
52
53
# File 'lib/sinclair/configurable.rb', line 51

def reset_config
  config_factory.reset_config
end