class CarryOut::PlanRunner
Public Class Methods
call(plan, context = {})
click to toggle source
# File lib/carry_out/plan_runner.rb, line 3 def self.call(plan, context = {}) Result.new(context).tap do |plan_result| node = plan until node.nil? node_result = nil begin node_result = node.call(plan_result.artifacts) if node_result.kind_of?(Plan::NodeResult) plan_result.add(node.returns_as, node_result.value) end rescue CarryOut::Error => error plan_result.add node.returns_as, error end break unless plan_result.success? node = node.connects_to end end end
call_unit(unit, context = {}, &block)
click to toggle source
# File lib/carry_out/plan_runner.rb, line 26 def self.call_unit(unit, context = {}, &block) node = Plan::Node.new(unit) Plan::NodeContext.new(node).cloaker(&block) unless block.nil? call(node, context) end