class Opera::Operation::Executor
Attributes
operation[R]
Public Class Methods
new(operation)
click to toggle source
# File lib/opera/operation/executor.rb, line 8 def initialize(operation) @operation = operation end
Public Instance Methods
add_instruction_output(instruction, output = {})
click to toggle source
# File lib/opera/operation/executor.rb, line 75 def add_instruction_output(instruction, output = {}) context["#{instruction[:method]}_output".to_sym] = output end
break_condition()
click to toggle source
# File lib/opera/operation/executor.rb, line 71 def break_condition operation.finished? || result.failure? end
call(instruction)
click to toggle source
# File lib/opera/operation/executor.rb, line 12 def call(instruction) instructions = instruction[:instructions] if instructions evaluate_instructions(instructions) else evaluate_instruction(instruction) end end
config()
click to toggle source
# File lib/opera/operation/executor.rb, line 59 def config operation.config end
context()
click to toggle source
# File lib/opera/operation/executor.rb, line 63 def context operation.context end
evaluate_instruction(instruction)
click to toggle source
rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity
# File lib/opera/operation/executor.rb, line 33 def evaluate_instruction(instruction) case instruction[:kind] when :step Instructions::Executors::Step.new(operation).call(instruction) when :operation Instructions::Executors::Operation.new(operation).call(instruction) when :operations Instructions::Executors::Operations.new(operation).call(instruction) when :success Instructions::Executors::Success.new(operation).call(instruction) when :validate Instructions::Executors::Validate.new(operation).call(instruction) when :transaction Instructions::Executors::Transaction.new(operation).call(instruction) when :benchmark Instructions::Executors::Benchmark.new(operation).call(instruction) else raise(UnknownInstructionError, "Unknown instruction #{instruction[:kind]}") end end
evaluate_instructions(instructions = [])
click to toggle source
# File lib/opera/operation/executor.rb, line 22 def evaluate_instructions(instructions = []) instruction_copy = Marshal.load(Marshal.dump(instructions)) while instruction_copy.any? instruction = instruction_copy.shift evaluate_instruction(instruction) break if break_condition end end
reporter()
click to toggle source
# File lib/opera/operation/executor.rb, line 67 def reporter config.reporter end
result()
click to toggle source
rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity
# File lib/opera/operation/executor.rb, line 55 def result operation.result end