Module: Statistrano::Config::Configurable

Included in:
Deployment::Strategy::Base
Defined in:
lib/statistrano/config/configurable.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(extending_obj) ⇒ Object

add a config method to objects that extend Configurable



38
39
40
41
42
43
44
45
46
# 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

Instance Method Details

#configurationObject



5
6
7
# File 'lib/statistrano/config/configurable.rb', line 5

def configuration
  @_configuration ||= Config.new()
end

#inherited(subclass) ⇒ Object

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



52
53
54
55
56
57
58
# 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 = {}) ⇒ Object



9
10
11
12
13
14
15
# 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) ⇒ Object



24
25
26
# File 'lib/statistrano/config/configurable.rb', line 24

def options *args
  args.each { |a| option(a) }
end

#task(name, method, description) ⇒ Object



28
29
30
31
32
33
# 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) ⇒ Object



17
18
19
20
21
22
# 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