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
#configure ⇒ Object
39 40 41 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 39 def configure # You can override in a subclass end |
#initialize ⇒ Object
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 |