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

Instance Method Summary collapse

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

#validateObject

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