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