module Tumugi::Mixin::Parameterizable

Public Class Methods

included(mod) click to toggle source
# File lib/tumugi/mixin/parameterizable.rb, line 8
def self.included(mod)
  mod.extend(ClassMethods)
end
new() click to toggle source
Calls superclass method
# 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

Public Instance Methods

configure() click to toggle source
# File lib/tumugi/mixin/parameterizable.rb, line 39
def configure
  # You can override in a subclass
end
validate_params(params) click to toggle source
# 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