class Opera::Operation::Base

Attributes

context[RW]
dependencies[R]
params[R]
result[R]

Public Class Methods

call(args = {}) click to toggle source
# File lib/opera/operation/base.rb, line 32
def call(args = {})
  operation = new(params: args.fetch(:params, {}), dependencies: args.fetch(:dependencies, {}))
  executor = Executor.new(operation)
  executor.evaluate_instructions(instructions)
  executor.result
end
check_method_availability!(method) click to toggle source
# File lib/opera/operation/base.rb, line 51
def check_method_availability!(method)
  return if instance_methods(false).none?(method)

  raise(ArgumentError, "Method #{method} is already defined")
end
config() click to toggle source
# File lib/opera/operation/base.rb, line 39
def config
  @config ||= Config.new
end
configure() { |config| ... } click to toggle source
# File lib/opera/operation/base.rb, line 43
def configure
  yield config
end
new(params: {}, dependencies: {}) click to toggle source
# File lib/opera/operation/base.rb, line 11
def initialize(params: {}, dependencies: {})
  @context = {}
  @finished = false
  @result = Result.new
  @params = params.freeze
  @dependencies = dependencies.freeze
end
reporter() click to toggle source
# File lib/opera/operation/base.rb, line 47
def reporter
  config.reporter
end

Public Instance Methods

config() click to toggle source
# File lib/opera/operation/base.rb, line 19
def config
  self.class.config
end
finish!() click to toggle source
# File lib/opera/operation/base.rb, line 23
def finish!
  @finished = true
end
finished?() click to toggle source
# File lib/opera/operation/base.rb, line 27
def finished?
  @finished
end