class AASM::Core::Invokers::ProcInvoker
state/event/transition callbacks.
Proc invoker which allows to use Procs as
#
def exec_proc(parameters_size)
def exec_proc(parameters_size) return record.instance_exec(&subject) if parameters_size.zero? return record.instance_exec(*args, &subject) if parameters_size < 0 record.instance_exec(*args[0..(parameters_size - 1)], &subject) end
def invoke_subject
def invoke_subject @result = if support_parameters? exec_proc(parameters_to_arity) else exec_proc(subject.arity) end end
def log_failure
def log_failure return log_source_location if Method.method_defined?(:source_location) log_proc_info end
def log_proc_info
def log_proc_info failures << subject end
def log_source_location
def log_source_location failures << subject.source_location.join('#') end
def may_invoke?
def may_invoke? subject.is_a?(Proc) end
def parameters_to_arity
def parameters_to_arity subject.parameters.inject(0) do |memo, parameter| memo += 1 memo *= -1 if parameter[0] == :rest && memo > 0 memo end end
def support_parameters?
def support_parameters? subject.respond_to?(:parameters) end