class AASM::Core::Invokers::LiteralInvoker
record methods as state/event/transition callbacks.
Literal invoker which allows to use strings or symbols to call
#
def exec_subject
def exec_subject raise(*record_error) unless record.respond_to?(subject, true) return record.__send__(subject) if subject_arity.zero? return record.__send__(subject, *args) if subject_arity < 0 req_args = args[0..(subject_arity - 1)] return record.__send__(subject, **req_args[0]) if req_args[0].is_a?(Hash) record.__send__(subject, *req_args) end
def invoke_subject
def invoke_subject @result = exec_subject end
def log_failure
def log_failure failures << subject end
def may_invoke?
def may_invoke? subject.is_a?(String) || subject.is_a?(Symbol) end
def record_error
def record_error [ NoMethodError, 'NoMethodError: undefined method ' \ "`#{subject}' for #{record.inspect}:#{record.class}" ] end
def subject_arity
def subject_arity @arity ||= record.__send__(:method, subject.to_sym).arity end