class Rockflow::Step
Attributes
conditions[RW]
errors[RW]
flow[RW]
params[RW]
status[RW]
Public Class Methods
new(flow, opts = {})
click to toggle source
# File lib/rockflow/step.rb, line 5 def initialize(flow, opts = {}) @flow = flow @after_dependencies = [] @errors = [] @params = opts[:params] @status = :not_started @conditions = opts[:conditions] add_after_dependencies(opts[:after]) end
Public Instance Methods
add_after_dependencies(deps = [])
click to toggle source
# File lib/rockflow/step.rb, line 42 def add_after_dependencies(deps = []) [deps].flatten.each do |dep| @after_dependencies << dep end end
add_payload(key, value)
click to toggle source
# File lib/rockflow/step.rb, line 38 def add_payload(key, value) @flow.payload[key] = value end
after_dependencies_finished?()
click to toggle source
# File lib/rockflow/step.rb, line 48 def after_dependencies_finished? @after_dependencies.inject(true) do |result, elem| dependent_steps_running = !(@flow.steps.select do |step| step.class == elem && !step.finished? end.any?) result = result && dependent_steps_running result end end
execute_post_conditions()
click to toggle source
# File lib/rockflow/step.rb, line 72 def execute_post_conditions select_conditions(:post).each do |cond| exec_condition(cond, ::Rockflow::Errors::PostCondition) end end
execute_pre_conditions()
click to toggle source
# File lib/rockflow/step.rb, line 66 def execute_pre_conditions select_conditions(:pre).each do |cond| exec_condition(cond, ::Rockflow::Errors::PreCondition) end end
fail!()
click to toggle source
# File lib/rockflow/step.rb, line 30 def fail! @status = :failed end
failed?()
click to toggle source
# File lib/rockflow/step.rb, line 34 def failed? @status == :failed end
finish!()
click to toggle source
# File lib/rockflow/step.rb, line 22 def finish! @status = :finished end
finished?()
click to toggle source
# File lib/rockflow/step.rb, line 26 def finished? @status == :finished end
it_up()
click to toggle source
# File lib/rockflow/step.rb, line 15 def it_up end
payload()
click to toggle source
# File lib/rockflow/step.rb, line 18 def payload @flow.payload end
select_conditions(pre_or_post)
click to toggle source
# File lib/rockflow/step.rb, line 58 def select_conditions(pre_or_post) conditions.select do |cond| cond[pre_or_post.to_sym] end.map do |cond| cond[pre_or_post.to_sym] end rescue [] end
Private Instance Methods
exec_block_or_symbol(block_or_symbol, error) { || ... }
click to toggle source
# File lib/rockflow/step.rb, line 86 def exec_block_or_symbol(block_or_symbol, error) if block_or_symbol.is_a? Proc yield elsif block_or_symbol.is_a? Symbol exec_method(block_or_symbol, error) end end
exec_condition(block_or_symbol, error)
click to toggle source
# File lib/rockflow/step.rb, line 80 def exec_condition(block_or_symbol, error) exec_block_or_symbol(block_or_symbol, error) do exec_condition_block(block_or_symbol, error) end end
exec_condition_block(block, error)
click to toggle source
# File lib/rockflow/step.rb, line 94 def exec_condition_block(block, error) unless block.call fail_execution(error) end end
exec_method(method, error)
click to toggle source
# File lib/rockflow/step.rb, line 100 def exec_method(method, error) unless self.step.send(method.to_sym) fail_execution(error) end end
fail_execution(error)
click to toggle source
# File lib/rockflow/step.rb, line 106 def fail_execution(error) self.fail! @errors << error.new(self) end