Module: Tumugi::Mixin::Parameterizable

Included in:
Task
Defined in:
lib/tumugi/mixin/parameterizable.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(mod) ⇒ Object



8
9
10
# File 'lib/tumugi/mixin/parameterizable.rb', line 8

def self.included(mod)
  mod.extend(ClassMethods)
end

Instance Method Details

#configureObject



39
40
41
# File 'lib/tumugi/mixin/parameterizable.rb', line 39

def configure
  # You can override in a subclass
end

#initializeObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/tumugi/mixin/parameterizable.rb', line 12

def initialize
  super()
  proxy = self.class.merged_parameter_proxy
  params = proxy.params.dup
  proxy.param_defaults.each do |name, value|
    if params[name]
      params[name] = params[name].merge_default_value(value)
    end
  end
  params.each do |name, param|
    unless proxy.param_auto_bind_enabled.nil?
      param.task_param_auto_bind_enabled = proxy.param_auto_bind_enabled
    end
    instance_variable_set("@#{name}", param.get)
  end
  validate_params(proxy.params)
  configure
end

#validate_params(params) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/tumugi/mixin/parameterizable.rb', line 31

def validate_params(params)
  params.each do |name, param|
    if param.required? && instance_variable_get("@#{name}").nil?
      raise Tumugi::ParameterError.new("Parameter #{name} is required")
    end
  end
end