class AASM::Core::Invokers::ClassInvoker
to be used as state/event/transition callbacks.
Class invoker which allows to use classes which respond to #call
#
def instance
def instance @instance ||= retrieve_instance end
def invoke_subject
def invoke_subject @result = instance.call end
def log_failure
def log_failure return log_source_location if Method.method_defined?(:source_location) log_method_info end
def log_method_info
def log_method_info failures << instance.method(:call) end
def log_source_location
def log_source_location failures << instance.method(:call).source_location.join('#') end
def may_invoke?
def may_invoke? subject.is_a?(Class) && subject.instance_methods.include?(:call) end
def retrieve_instance
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
def subject_arity
def subject_arity @arity ||= subject.instance_method(:initialize).arity end