class Opera::Operation::Instructions::Executors::Operations

Public Instance Methods

call(instruction) click to toggle source

rubocop:disable Metrics/MethodLength

Calls superclass method Opera::Operation::Executor#call
# File lib/opera/operation/instructions/executors/operations.rb, line 11
def call(instruction)
  instruction[:kind] = :step
  operations_results = super

  return if result.exceptions.any?

  case operations_results
  when Array
    operations_results.each do |operation_result|
      raise_error unless operation_result.is_a?(Opera::Operation::Result)
    end

    failures = operations_results.select(&:failure?)

    if failures.any?
      add_failures(failures)
    else
      add_results(instruction, operations_results)
    end
  else
    raise_error
  end
end

Private Instance Methods

add_failures(failures) click to toggle source

rubocop:enable Metrics/MethodLength

# File lib/opera/operation/instructions/executors/operations.rb, line 38
def add_failures(failures)
  failures.each do |failure|
    result.add_errors(failure.errors)
    result.add_exceptions(failure.exceptions)
  end
end
add_results(instruction, results) click to toggle source
# File lib/opera/operation/instructions/executors/operations.rb, line 45
def add_results(instruction, results)
  add_instruction_output(instruction, results.map(&:output))
  execution = result.executions.pop
  result.executions << { execution => results.map(&:executions) }
end
raise_error() click to toggle source
# File lib/opera/operation/instructions/executors/operations.rb, line 51
def raise_error
  raise WrongOperationsResultError, 'Have to return array of Opera::Operation::Result'
end