Module: RightConf::Configurator
- Includes:
- ProgressReporter
- Included in:
- BundlerConfigurator, RubyConfigurator
- Defined in:
- lib/rconf/configurator.rb
Overview
Configurator mixin, defines DSL and common validation method
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
-
.included(base) ⇒ Object
Extend base class with ClassMethods module methods.
Instance Method Summary collapse
-
#[](config_option) ⇒ Object
Get value of configuration option.
-
#run(*args) ⇒ Object
Run configurator for current platform.
-
#validate ⇒ Object
Check whether configurator has values for all required settings.
Methods included from ProgressReporter
report_to_file, report_to_stdout
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(meth, *args) ⇒ Object (protected)
DSL implementation, set settings value if arguments, get it otherwise.
Parameters
- meth(Symbol)
-
Method symbol
- args(Array)
-
List of arguments
Return
- res(Object)
-
Configuration setting value or setter return value if arguments
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/rconf/configurator.rb', line 149 def method_missing(meth, *args) init num_args = args.length res = nil if num_args > 0 meth = $1.to_sym unless (meth.to_s =~ /(.+)=$/).nil? value = num_args == 1 ? args[0] : args method_name = meth.id2name if self.public_methods.include?("#{method_name}=") res = self.send("#{method_name}=", value) else res = @settings_values[meth] = value end end res || @settings_values[meth] end |
Class Method Details
.included(base) ⇒ Object
Extend base class with ClassMethods module methods
Parameters
- base(Object)
-
Object including module
88 89 90 |
# File 'lib/rconf/configurator.rb', line 88 def self.included(base) base.__send__(:extend, ClassMethods) end |
Instance Method Details
#[](config_option) ⇒ Object
Get value of configuration option
Parameters
- config_option(Symbol)
-
Configuration option to return
Returns
- value
-
Value of configuration option if there is one
- nil
-
Otherwise
133 134 135 136 |
# File 'lib/rconf/configurator.rb', line 133 def [](config_option) init @settings_values[config_option] end |
#run(*args) ⇒ Object
Run configurator for current platform
Parameters
- args
-
Pass-through arguments, given to platform specific implementation
Return
- true
-
Always return true
119 120 121 122 123 |
# File 'lib/rconf/configurator.rb', line 119 def run(*args) init Platform.dispatch(*args) { :run } true end |
#validate ⇒ Object
Check whether configurator has values for all required settings
Return
- nil
-
If settings are valid for this configurator
- error(String)
-
Error message otherwise
97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/rconf/configurator.rb', line 97 def validate init required = self.class.required_settings return nil unless required missing = required.flatten.select { |s| !@settings_values.include?(s) } error = case missing.size when 0 then nil when 1 then "Required setting #{missing.first} is " else "Required settings #{missing.join(', ')} are " end error += "missing for configuration section '#{self.class.key}'" if error error end |