class AASM::Core::Invokers::ClassInvoker
Class invoker which allows to use classes which respond to call to be used as state/event/transition callbacks.
Public Instance Methods
invoke_subject()
click to toggle source
# File lib/aasm/core/invokers/class_invoker.rb, line 19 def invoke_subject @result = instance.call end
log_failure()
click to toggle source
# File lib/aasm/core/invokers/class_invoker.rb, line 14 def log_failure return log_source_location if Method.method_defined?(:source_location) log_method_info end
may_invoke?()
click to toggle source
# File lib/aasm/core/invokers/class_invoker.rb, line 10 def may_invoke? subject.is_a?(Class) && subject.instance_methods.include?(:call) end
Private Instance Methods
instance()
click to toggle source
# File lib/aasm/core/invokers/class_invoker.rb, line 33 def instance @instance ||= retrieve_instance end
log_method_info()
click to toggle source
# File lib/aasm/core/invokers/class_invoker.rb, line 29 def log_method_info failures << instance.method(:call) end
log_source_location()
click to toggle source
# File lib/aasm/core/invokers/class_invoker.rb, line 25 def log_source_location failures << instance.method(:call).source_location.join('#') end
retrieve_instance()
click to toggle source
rubocop:disable Metrics/AbcSize
# File lib/aasm/core/invokers/class_invoker.rb, line 38 def retrieve_instance return subject.new if subject_arity.zero? return subject.new(record) if subject_arity == 1 return subject.new(record, *args) if subject_arity < 0 subject.new(record, *args[0..(subject_arity - 2)]) end
subject_arity()
click to toggle source
rubocop:enable Metrics/AbcSize
# File lib/aasm/core/invokers/class_invoker.rb, line 46 def subject_arity @arity ||= subject.instance_method(:initialize).arity end