Skip to content

Instantly share code, notes, and snippets.

@yhirano55
Created March 2, 2017 07:14
Show Gist options
  • Save yhirano55/ea56a89bc8b52c1a75a57945d3ce709f to your computer and use it in GitHub Desktop.
Save yhirano55/ea56a89bc8b52c1a75a57945d3ce709f to your computer and use it in GitHub Desktop.

Human.create.run

event current was
before_all_events sleeping sleeping
before_event sleeping sleeping
guards_event sleeping sleeping
guards_transition sleeping sleeping
before_exit_old_state sleeping sleeping
exit_old_state sleeping sleeping
after_all_transitions sleeping sleeping
after_transition sleeping sleeping
before_enter_new_state sleeping sleeping
enter_new_state sleeping sleeping
after_exit_old_state running sleeping
after_enter_new_state running sleeping
after_event running sleeping
after_all_events running sleeping
ensure_event running sleeping
ensure_on_all_events running sleeping

Human.create.run!

event current was
before_transaction sleeping sleeping
before_all_transactions sleeping sleeping

begin transaction

event current was
before_all_events sleeping sleeping
before_event sleeping sleeping
guards_event sleeping sleeping
guards_transition sleeping sleeping
before_exit_old_state sleeping sleeping
exit_old_state sleeping sleeping
after_all_transitions sleeping sleeping
after_transition sleeping sleeping
before_enter_new_state sleeping sleeping
enter_new_state sleeping sleeping

UPDATE "humen" SET "state" = ?, "updated_at" = ? WHERE "humen"."id" = ? [["state", 1], ["updated_at", 2017-03-02 07:11:02 UTC], ["id", 22]]

event current was
success_transition running running
success_event running running
after_exit_old_state running running
after_enter_new_state running running
after_event running running
after_all_events running running
ensure_event running running
ensure_on_all_events running running

commit transaction

event current was
after_commit running running
after_transaction running running
after_all_transactions running running
class Human < ApplicationRecord
include AASM
enum state: { sleeping: 0, running: 1, cleaning: 2 }
aasm column: :state, enum: true do
state :sleeping, initial: true, before_exit: :before_exit_old_state, exit: :exit_old_state, after_exit: :after_exit_old_state
state :running, before_enter: :before_enter_new_state, enter: :enter_new_state, after_enter: :after_enter_new_state
state :cleaning
before_all_events :before_all_events
after_all_transitions :after_all_transitions
before_all_transactions :before_all_transactions
after_all_transactions :after_all_transactions
after_all_events :after_all_events
ensure_on_all_events :ensure_on_all_events
event :run, before: :before_event, guards: :guards_event, before_success: :before_success_event, success: :success_event, after: :after_event, ensure: :ensure_event, before_transaction: :before_transaction, aasm_fire_event: :exec_aasm_fire_event, after_commit: :after_commit, after_transaction: :after_transaction do
transitions :from => :sleeping, :to => :running, guards: :guards_transition, after: :after_transition, success: :success_transition
end
event :clean do
transitions :from => :running, :to => :cleaning
end
event :sleep do
transitions :from => [:running, :cleaning], :to => :sleeping
end
end
def logging
puts "[#{__callee__}] current: #{state}, was: #{state_was}"
true
end
%i(
before_all_events
before_event
guards_event
guards_transition
before_exit_old_state
exit_old_state
after_all_transitions
after_transition
before_enter_new_state
enter_new_state
before_success_event
success_transition
success_event
after_exit_old_state
after_enter_new_state
after_event
after_all_events
ensure_event
ensure_on_all_events
before_all_transactions
before_transaction
exec_aasm_fire_event
after_commit
after_transaction
after_all_transactions
).each do |method_name|
alias_method(method_name, :logging)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment