module Statistrano::Config::Configurable

Public Class Methods

extended(extending_obj) click to toggle source

add a config method to objects that extend Configurable

# File lib/statistrano/config/configurable.rb, line 38
def self.extended extending_obj
  extending_obj.send :define_method,
                     :config,
                     -> {
                        @_config ||= Config.new( options: self.class.configuration.options,
                                                 tasks: self.class.configuration.tasks,
                                                 validators: self.class.configuration.validators )
                     }
end

Public Instance Methods

configuration() click to toggle source
# File lib/statistrano/config/configurable.rb, line 5
def configuration
  @_configuration ||= Config.new()
end
inherited(subclass) click to toggle source

make sure that classes that inherit from classes that have been configured also inherit the configuration of the parent class

# File lib/statistrano/config/configurable.rb, line 52
def inherited subclass
  subclass.superclass.class_eval do
    subclass.configuration.options.merge!  subclass.superclass.configuration.options
    subclass.configuration.tasks.merge! subclass.superclass.configuration.tasks
    subclass.configuration.validators.merge! subclass.superclass.configuration.validators
  end
end
option(key, value=nil, proc=nil, opts={}) click to toggle source
# File lib/statistrano/config/configurable.rb, line 9
def option key, value=nil, proc=nil, opts={}
  if proc
    configuration.options[key] = { call: proc }
  else
    configuration.options[key] = value
  end
end
options(*args) click to toggle source
# File lib/statistrano/config/configurable.rb, line 24
def options *args
  args.each { |a| option(a) }
end
task(name, method, description) click to toggle source
# File lib/statistrano/config/configurable.rb, line 28
def task name, method, description
  configuration.tasks[name] = {
    method: method,
    desc: description
  }
end
validate(key, proc, message=nil) click to toggle source
# File lib/statistrano/config/configurable.rb, line 17
def validate key, proc, message=nil
  configuration.validators[key] = { validator: proc }
  if message
    configuration.validators[key][:message] = message
  end
end