Module: Mixlib::Config

Defined in:
lib/mixlib/config.rb

Class Method Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_symbol, *args) ⇒ Object

Allows for simple lookups and setting of configuration options via method calls on Mixlib::Config. If there any arguments to the method, they are used to set the value of the configuration option. Otherwise, it’s a simple get operation.

Parameters

method_symbol<Symbol>

The method called. Must match a configuration option.

*args

Any arguments passed to the method

Returns

value

The value of the configuration option.

Raises

<ArgumentError>

If the method_symbol does not match a configuration option.



164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/mixlib/config.rb', line 164

def method_missing(method_symbol, *args)
  num_args = args.length
  # Setting
  if num_args > 0
    method_symbol = $1.to_sym unless (method_symbol.to_s =~ /(.+)=$/).nil?
    internal_set method_symbol, (num_args == 1 ? args[0] : args)
  end
  
  # Returning
  self.configuration[method_symbol]        

end

Class Method Details

.extended(base) ⇒ Object



30
31
32
33
# File 'lib/mixlib/config.rb', line 30

def self.extended(base)
  class << base; attr_accessor :configuration; end
  base.configuration = Hash.new
end

Instance Method Details

#[](config_option) ⇒ Object

Get the value of a configuration option

Parameters

config_option<Symbol>

The configuration option to return

Returns

value

The value of the configuration option

Raises

<ArgumentError>

If the configuration option does not exist



64
65
66
# File 'lib/mixlib/config.rb', line 64

def [](config_option)
  self.configuration[config_option.to_sym]
end

#[]=(config_option, value) ⇒ Object

Set the value of a configuration option

Parameters

config_option<Symbol>

The configuration option to set (within the [])

value

The value for the configuration option

Returns

value

The new value of the configuration option



76
77
78
# File 'lib/mixlib/config.rb', line 76

def []=(config_option, value)
  internal_set(config_option,value)
end

#config_attr_writer(method_symbol, &blk) ⇒ Object

metaprogramming to ensure that the slot for method_symbol gets set to value after any other logic is run

Parameters

method_symbol<Symbol>

Name of the method (variable setter)

blk<Block>

logic block to run in setting slot method_symbol to value

value<Object>

Value to be set in config hash



144
145
146
147
148
149
# File 'lib/mixlib/config.rb', line 144

def config_attr_writer(method_symbol, &blk)
  method_name = "#{method_symbol.to_s}="
  meta_def method_name do |value|
    self.configuration[method_symbol] = blk.call(value)
  end
end

#configure(&block) ⇒ Object

Pass Mixlib::Config.configure() a block, and it will yield self.configuration.

Parameters

<block>

A block that is sent self.configuration as its argument



50
51
52
# File 'lib/mixlib/config.rb', line 50

def configure(&block)
  block.call(self.configuration)
end

#from_file(filename) ⇒ Object

Loads a given ruby file, and runs instance_eval against it in the context of the current object.

Raises an IOError if the file cannot be found, or is not readable.

Parameters

<string>

A filename to read from



42
43
44
# File 'lib/mixlib/config.rb', line 42

def from_file(filename)
  self.instance_eval(IO.read(filename), filename, 1)
end

#has_key?(key) ⇒ Boolean

Check if Mixlib::Config has a configuration option.

Parameters

key<Symbol>

The configuration option to check for

Returns

<True>

If the configuration option exists

<False>

If the configuration option does not exist

Returns:

  • (Boolean)


88
89
90
# File 'lib/mixlib/config.rb', line 88

def has_key?(key)
  self.configuration.has_key?(key.to_sym)
end

#hash_dupObject

Creates a shallow copy of the internal hash

Returns

result of Hash#dup



115
116
117
# File 'lib/mixlib/config.rb', line 115

def hash_dup
  self.configuration.dup
end

#keysObject

Return the set of config hash keys

Returns

result of Hash#keys



107
108
109
# File 'lib/mixlib/config.rb', line 107

def keys
  self.configuration.keys
end

#merge!(hash) ⇒ Object

Merge an incoming hash with our config options

Parameters

hash<Hash>

The incoming hash

Returns

result of Hash#merge!



99
100
101
# File 'lib/mixlib/config.rb', line 99

def merge!(hash)
  self.configuration.merge!(hash)
end