class AASM::Core::Invokers::LiteralInvoker
Literal invoker which allows to use strings or symbols to call record methods as state/event/transition callbacks.
Public Instance Methods
invoke_subject()
click to toggle source
# File lib/aasm/core/invokers/literal_invoker.rb, line 18 def invoke_subject @result = exec_subject end
log_failure()
click to toggle source
# File lib/aasm/core/invokers/literal_invoker.rb, line 14 def log_failure failures << subject end
may_invoke?()
click to toggle source
# File lib/aasm/core/invokers/literal_invoker.rb, line 10 def may_invoke? subject.is_a?(String) || subject.is_a?(Symbol) end
Private Instance Methods
exec_subject()
click to toggle source
rubocop:disable Metrics/AbcSize
# File lib/aasm/core/invokers/literal_invoker.rb, line 29 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 record.__send__(subject, *args[0..(subject_arity - 1)]) end
record_error()
click to toggle source
rubocop:enable Metrics/AbcSize
# File lib/aasm/core/invokers/literal_invoker.rb, line 37 def record_error [ NoMethodError, 'NoMethodError: undefined method ' \ "`#{subject}' for #{record.inspect}:#{record.class}" ] end
subject_arity()
click to toggle source
# File lib/aasm/core/invokers/literal_invoker.rb, line 24 def subject_arity @arity ||= record.__send__(:method, subject.to_sym).arity end