class AASM::Core::Invokers::BaseInvoker

Base concrete invoker class which contain basic invoking and logging definitions

Attributes

args[R]
failures[R]
record[R]
result[R]
subject[R]

Public Class Methods

new(subject, record, args) click to toggle source

Initialize a new concrete invoker instance. NOTE that concrete invoker must be used per-subject/record

(one instance per subject/record)

Options:

subject - invoking subject comparable with this invoker record - invoking record args - arguments which will be passed to the callback

# File lib/aasm/core/invokers/base_invoker.rb, line 23
def initialize(subject, record, args)
  @subject = subject
  @record = record
  @args = args
  @result = false
  @failures = []
end

Public Instance Methods

invoke() click to toggle source

Execute concrete invoker, log the error and return result

# File lib/aasm/core/invokers/base_invoker.rb, line 46
def invoke
  return unless may_invoke?
  log_failure unless invoke_subject
  result
end
invoke_subject() click to toggle source

Execute concrete invoker

# File lib/aasm/core/invokers/base_invoker.rb, line 69
def invoke_subject
  raise NoMethodError, '"#invoke_subject" is not implemented'
end
log_failure() click to toggle source

Log failed invoking

# File lib/aasm/core/invokers/base_invoker.rb, line 62
def log_failure
  raise NoMethodError, '"#log_failure" is not implemented'
end
may_invoke?() click to toggle source

Check if concrete invoker may be invoked for a specified subject

# File lib/aasm/core/invokers/base_invoker.rb, line 55
def may_invoke?
  raise NoMethodError, '"#may_invoke?" is not implemented'
end
with_failures(failures_buffer) click to toggle source

Collect failures to a specified buffer

Options:

failures - failures buffer to collect failures

# File lib/aasm/core/invokers/base_invoker.rb, line 38
def with_failures(failures_buffer)
  @failures = failures_buffer
  self
end