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