Module: Mixlib::Config
- Defined in:
- lib/mixlib/config.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#[](config_option) ⇒ Object
Get the value of a configuration option.
-
#[]=(config_option, value) ⇒ Object
Set the value of a configuration option.
-
#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.
-
#configure(&block) ⇒ Object
Pass Mixlib::Config.configure() a block, and it will yield self.configuration.
-
#from_file(filename) ⇒ Object
Loads a given ruby file, and runs instance_eval against it in the context of the current object.
-
#has_key?(key) ⇒ Boolean
Check if Mixlib::Config has a configuration option.
-
#hash_dup ⇒ Object
Creates a shallow copy of the internal hash.
-
#keys ⇒ Object
Return the set of config hash keys.
-
#merge!(hash) ⇒ Object
Merge an incoming hash with our config options.
-
#method_missing(method_symbol, *args) ⇒ Object
Allows for simple lookups and setting of configuration options via method calls on Mixlib::Config.
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.
159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/mixlib/config.rb', line 159 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
24 25 26 27 |
# File 'lib/mixlib/config.rb', line 24 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
58 59 60 |
# File 'lib/mixlib/config.rb', line 58 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
70 71 72 |
# File 'lib/mixlib/config.rb', line 70 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
138 139 140 141 142 143 144 |
# File 'lib/mixlib/config.rb', line 138 def config_attr_writer(method_symbol, &blk) = class << self; self; end method_name = "#{method_symbol.to_s}=".to_sym .send :define_method, 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
44 45 46 |
# File 'lib/mixlib/config.rb', line 44 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
36 37 38 |
# File 'lib/mixlib/config.rb', line 36 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
82 83 84 |
# File 'lib/mixlib/config.rb', line 82 def has_key?(key) self.configuration.has_key?(key.to_sym) end |
#hash_dup ⇒ Object
Creates a shallow copy of the internal hash
Returns
result of Hash#dup
109 110 111 |
# File 'lib/mixlib/config.rb', line 109 def hash_dup self.configuration.dup end |
#keys ⇒ Object
Return the set of config hash keys
Returns
result of Hash#keys
101 102 103 |
# File 'lib/mixlib/config.rb', line 101 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!
93 94 95 |
# File 'lib/mixlib/config.rb', line 93 def merge!(hash) self.configuration.merge!(hash) end |