aasm 5.0.0 → 5.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +243 -118
- data/lib/aasm/aasm.rb +29 -27
- data/lib/aasm/base.rb +61 -11
- data/lib/aasm/configuration.rb +3 -0
- data/lib/aasm/core/event.rb +21 -9
- data/lib/aasm/core/invokers/class_invoker.rb +1 -1
- data/lib/aasm/core/invokers/literal_invoker.rb +3 -1
- data/lib/aasm/core/state.rb +6 -5
- data/lib/aasm/core/transition.rb +1 -1
- data/lib/aasm/dsl_helper.rb +24 -22
- data/lib/aasm/errors.rb +3 -1
- data/lib/aasm/instance_base.rb +28 -5
- data/lib/aasm/localizer.rb +13 -3
- data/lib/aasm/persistence/active_record_persistence.rb +25 -5
- data/lib/aasm/persistence/base.rb +14 -3
- data/lib/aasm/persistence/core_data_query_persistence.rb +2 -1
- data/lib/aasm/persistence/dynamoid_persistence.rb +1 -1
- data/lib/aasm/persistence/mongoid_persistence.rb +1 -1
- data/lib/aasm/persistence/no_brainer_persistence.rb +1 -1
- data/lib/aasm/persistence/orm.rb +23 -19
- data/lib/aasm/persistence/redis_persistence.rb +1 -1
- data/lib/aasm/rspec/transition_from.rb +5 -1
- data/lib/aasm/version.rb +1 -1
- data/lib/aasm.rb +0 -2
- data/lib/generators/aasm/orm_helpers.rb +7 -1
- data/lib/generators/active_record/aasm_generator.rb +3 -1
- data/lib/generators/active_record/templates/migration.rb +1 -1
- metadata +35 -385
- data/.document +0 -6
- data/.gitignore +0 -20
- data/.travis.yml +0 -54
- data/API +0 -34
- data/Appraisals +0 -66
- data/CHANGELOG.md +0 -377
- data/CODE_OF_CONDUCT.md +0 -13
- data/CONTRIBUTING.md +0 -24
- data/Dockerfile +0 -44
- data/Gemfile +0 -6
- data/Gemfile.lock_old +0 -151
- data/HOWTO +0 -12
- data/PLANNED_CHANGES.md +0 -11
- data/README_FROM_VERSION_3_TO_4.md +0 -240
- data/Rakefile +0 -31
- data/TESTING.md +0 -25
- data/aasm.gemspec +0 -35
- data/callbacks.txt +0 -51
- data/docker-compose.yml +0 -40
- data/gemfiles/rails_3.2.gemfile +0 -13
- data/gemfiles/rails_4.0.gemfile +0 -15
- data/gemfiles/rails_4.2.gemfile +0 -16
- data/gemfiles/rails_4.2_mongoid_5.gemfile +0 -11
- data/gemfiles/rails_4.2_nobrainer.gemfile +0 -9
- data/gemfiles/rails_5.0.gemfile +0 -13
- data/gemfiles/rails_5.0_nobrainer.gemfile +0 -9
- data/gemfiles/rails_5.1.gemfile +0 -13
- data/spec/database.rb +0 -44
- data/spec/database.yml +0 -3
- data/spec/en.yml +0 -12
- data/spec/en_deprecated_style.yml +0 -10
- data/spec/generators/active_record_generator_spec.rb +0 -47
- data/spec/generators/mongoid_generator_spec.rb +0 -31
- data/spec/generators/no_brainer_generator_spec.rb +0 -29
- data/spec/models/active_record/basic_active_record_two_state_machines_example.rb +0 -25
- data/spec/models/active_record/complex_active_record_example.rb +0 -37
- data/spec/models/active_record/derivate_new_dsl.rb +0 -7
- data/spec/models/active_record/false_state.rb +0 -35
- data/spec/models/active_record/gate.rb +0 -39
- data/spec/models/active_record/invalid_persistor.rb +0 -29
- data/spec/models/active_record/localizer_test_model.rb +0 -34
- data/spec/models/active_record/no_direct_assignment.rb +0 -21
- data/spec/models/active_record/no_scope.rb +0 -21
- data/spec/models/active_record/persisted_state.rb +0 -12
- data/spec/models/active_record/provided_and_persisted_state.rb +0 -24
- data/spec/models/active_record/reader.rb +0 -7
- data/spec/models/active_record/readme_job.rb +0 -21
- data/spec/models/active_record/silent_persistor.rb +0 -29
- data/spec/models/active_record/simple_new_dsl.rb +0 -17
- data/spec/models/active_record/thief.rb +0 -29
- data/spec/models/active_record/transactor.rb +0 -124
- data/spec/models/active_record/transient.rb +0 -6
- data/spec/models/active_record/validator.rb +0 -118
- data/spec/models/active_record/with_enum.rb +0 -39
- data/spec/models/active_record/with_enum_without_column.rb +0 -38
- data/spec/models/active_record/with_false_enum.rb +0 -31
- data/spec/models/active_record/with_true_enum.rb +0 -39
- data/spec/models/active_record/worker.rb +0 -2
- data/spec/models/active_record/writer.rb +0 -6
- data/spec/models/basic_two_state_machines_example.rb +0 -25
- data/spec/models/callbacks/basic.rb +0 -98
- data/spec/models/callbacks/basic_multiple.rb +0 -75
- data/spec/models/callbacks/guard_within_block.rb +0 -67
- data/spec/models/callbacks/guard_within_block_multiple.rb +0 -66
- data/spec/models/callbacks/multiple_transitions_transition_guard.rb +0 -66
- data/spec/models/callbacks/multiple_transitions_transition_guard_multiple.rb +0 -65
- data/spec/models/callbacks/private_method.rb +0 -44
- data/spec/models/callbacks/private_method_multiple.rb +0 -44
- data/spec/models/callbacks/with_args.rb +0 -62
- data/spec/models/callbacks/with_args_multiple.rb +0 -61
- data/spec/models/callbacks/with_state_arg.rb +0 -30
- data/spec/models/callbacks/with_state_arg_multiple.rb +0 -26
- data/spec/models/complex_example.rb +0 -222
- data/spec/models/conversation.rb +0 -93
- data/spec/models/default_state.rb +0 -12
- data/spec/models/double_definer.rb +0 -21
- data/spec/models/dynamoid/complex_dynamoid_example.rb +0 -37
- data/spec/models/dynamoid/dynamoid_multiple.rb +0 -18
- data/spec/models/dynamoid/dynamoid_simple.rb +0 -18
- data/spec/models/foo.rb +0 -106
- data/spec/models/foo_callback_multiple.rb +0 -45
- data/spec/models/guard_arguments_check.rb +0 -17
- data/spec/models/guard_with_params.rb +0 -24
- data/spec/models/guard_with_params_multiple.rb +0 -18
- data/spec/models/guardian.rb +0 -58
- data/spec/models/guardian_multiple.rb +0 -48
- data/spec/models/guardian_without_from_specified.rb +0 -18
- data/spec/models/initial_state_proc.rb +0 -31
- data/spec/models/mongoid/complex_mongoid_example.rb +0 -37
- data/spec/models/mongoid/invalid_persistor_mongoid.rb +0 -39
- data/spec/models/mongoid/mongoid_relationships.rb +0 -26
- data/spec/models/mongoid/no_scope_mongoid.rb +0 -21
- data/spec/models/mongoid/silent_persistor_mongoid.rb +0 -39
- data/spec/models/mongoid/simple_mongoid.rb +0 -23
- data/spec/models/mongoid/simple_new_dsl_mongoid.rb +0 -25
- data/spec/models/mongoid/validator_mongoid.rb +0 -100
- data/spec/models/multi_transitioner.rb +0 -34
- data/spec/models/multiple_transitions_that_differ_only_by_guard.rb +0 -31
- data/spec/models/namespaced_multiple_example.rb +0 -42
- data/spec/models/no_initial_state.rb +0 -25
- data/spec/models/nobrainer/complex_no_brainer_example.rb +0 -36
- data/spec/models/nobrainer/invalid_persistor_no_brainer.rb +0 -39
- data/spec/models/nobrainer/no_scope_no_brainer.rb +0 -21
- data/spec/models/nobrainer/nobrainer_relationships.rb +0 -25
- data/spec/models/nobrainer/silent_persistor_no_brainer.rb +0 -39
- data/spec/models/nobrainer/simple_new_dsl_nobrainer.rb +0 -25
- data/spec/models/nobrainer/simple_no_brainer.rb +0 -23
- data/spec/models/nobrainer/validator_no_brainer.rb +0 -98
- data/spec/models/not_auto_loaded/process.rb +0 -21
- data/spec/models/parametrised_event.rb +0 -42
- data/spec/models/parametrised_event_multiple.rb +0 -29
- data/spec/models/process_with_new_dsl.rb +0 -31
- data/spec/models/provided_state.rb +0 -24
- data/spec/models/redis/complex_redis_example.rb +0 -40
- data/spec/models/redis/redis_multiple.rb +0 -20
- data/spec/models/redis/redis_simple.rb +0 -20
- data/spec/models/sequel/complex_sequel_example.rb +0 -46
- data/spec/models/sequel/invalid_persistor.rb +0 -52
- data/spec/models/sequel/sequel_multiple.rb +0 -25
- data/spec/models/sequel/sequel_simple.rb +0 -26
- data/spec/models/sequel/silent_persistor.rb +0 -50
- data/spec/models/sequel/transactor.rb +0 -112
- data/spec/models/sequel/validator.rb +0 -93
- data/spec/models/sequel/worker.rb +0 -12
- data/spec/models/silencer.rb +0 -27
- data/spec/models/simple_custom_example.rb +0 -53
- data/spec/models/simple_example.rb +0 -17
- data/spec/models/simple_example_with_guard_args.rb +0 -17
- data/spec/models/simple_multiple_example.rb +0 -42
- data/spec/models/state_machine_with_failed_event.rb +0 -20
- data/spec/models/states_on_one_line_example.rb +0 -8
- data/spec/models/sub_class.rb +0 -41
- data/spec/models/sub_class_with_more_states.rb +0 -18
- data/spec/models/sub_classing.rb +0 -3
- data/spec/models/super_class.rb +0 -46
- data/spec/models/this_name_better_not_be_in_use.rb +0 -11
- data/spec/models/valid_state_name.rb +0 -23
- data/spec/spec_helper.rb +0 -26
- data/spec/spec_helpers/active_record.rb +0 -8
- data/spec/spec_helpers/dynamoid.rb +0 -35
- data/spec/spec_helpers/mongoid.rb +0 -26
- data/spec/spec_helpers/nobrainer.rb +0 -15
- data/spec/spec_helpers/redis.rb +0 -18
- data/spec/spec_helpers/remove_warnings.rb +0 -1
- data/spec/spec_helpers/sequel.rb +0 -7
- data/spec/unit/api_spec.rb +0 -100
- data/spec/unit/basic_two_state_machines_example_spec.rb +0 -10
- data/spec/unit/callback_multiple_spec.rb +0 -300
- data/spec/unit/callbacks_spec.rb +0 -491
- data/spec/unit/complex_example_spec.rb +0 -94
- data/spec/unit/complex_multiple_example_spec.rb +0 -115
- data/spec/unit/edge_cases_spec.rb +0 -16
- data/spec/unit/event_multiple_spec.rb +0 -73
- data/spec/unit/event_naming_spec.rb +0 -16
- data/spec/unit/event_spec.rb +0 -381
- data/spec/unit/exception_spec.rb +0 -11
- data/spec/unit/guard_arguments_check_spec.rb +0 -9
- data/spec/unit/guard_multiple_spec.rb +0 -60
- data/spec/unit/guard_spec.rb +0 -89
- data/spec/unit/guard_with_params_multiple_spec.rb +0 -10
- data/spec/unit/guard_with_params_spec.rb +0 -14
- data/spec/unit/guard_without_from_specified_spec.rb +0 -10
- data/spec/unit/initial_state_multiple_spec.rb +0 -15
- data/spec/unit/initial_state_spec.rb +0 -12
- data/spec/unit/inspection_multiple_spec.rb +0 -201
- data/spec/unit/inspection_spec.rb +0 -149
- data/spec/unit/invoker_spec.rb +0 -189
- data/spec/unit/invokers/base_invoker_spec.rb +0 -72
- data/spec/unit/invokers/class_invoker_spec.rb +0 -95
- data/spec/unit/invokers/literal_invoker_spec.rb +0 -86
- data/spec/unit/invokers/proc_invoker_spec.rb +0 -86
- data/spec/unit/localizer_spec.rb +0 -78
- data/spec/unit/memory_leak_spec.rb +0 -38
- data/spec/unit/multiple_transitions_that_differ_only_by_guard_spec.rb +0 -14
- data/spec/unit/namespaced_multiple_example_spec.rb +0 -75
- data/spec/unit/new_dsl_spec.rb +0 -12
- data/spec/unit/override_warning_spec.rb +0 -94
- data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +0 -618
- data/spec/unit/persistence/active_record_persistence_spec.rb +0 -735
- data/spec/unit/persistence/dynamoid_persistence_multiple_spec.rb +0 -135
- data/spec/unit/persistence/dynamoid_persistence_spec.rb +0 -84
- data/spec/unit/persistence/mongoid_persistence_multiple_spec.rb +0 -200
- data/spec/unit/persistence/mongoid_persistence_spec.rb +0 -165
- data/spec/unit/persistence/no_brainer_persistence_multiple_spec.rb +0 -198
- data/spec/unit/persistence/no_brainer_persistence_spec.rb +0 -158
- data/spec/unit/persistence/redis_persistence_multiple_spec.rb +0 -88
- data/spec/unit/persistence/redis_persistence_spec.rb +0 -53
- data/spec/unit/persistence/sequel_persistence_multiple_spec.rb +0 -148
- data/spec/unit/persistence/sequel_persistence_spec.rb +0 -368
- data/spec/unit/readme_spec.rb +0 -41
- data/spec/unit/reloading_spec.rb +0 -15
- data/spec/unit/rspec_matcher_spec.rb +0 -85
- data/spec/unit/simple_custom_example_spec.rb +0 -39
- data/spec/unit/simple_example_spec.rb +0 -42
- data/spec/unit/simple_multiple_example_spec.rb +0 -91
- data/spec/unit/state_spec.rb +0 -89
- data/spec/unit/states_on_one_line_example_spec.rb +0 -16
- data/spec/unit/subclassing_multiple_spec.rb +0 -74
- data/spec/unit/subclassing_spec.rb +0 -46
- data/spec/unit/transition_spec.rb +0 -436
- data/test/minitest_helper.rb +0 -57
- data/test/unit/minitest_matcher_test.rb +0 -80
@@ -1,66 +0,0 @@
|
|
1
|
-
module Callbacks
|
2
|
-
class GuardWithinBlockMultiple
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
def initialize(options={})
|
6
|
-
@fail_event_guard = options[:fail_event_guard]
|
7
|
-
@fail_transition_guard = options[:fail_transition_guard]
|
8
|
-
@log = options[:log]
|
9
|
-
end
|
10
|
-
|
11
|
-
aasm(:left) do
|
12
|
-
state :open, :initial => true,
|
13
|
-
:before_enter => :before_enter_open,
|
14
|
-
:enter => :enter_open,
|
15
|
-
:after_enter => :after_enter_open,
|
16
|
-
:before_exit => :before_exit_open,
|
17
|
-
:exit => :exit_open,
|
18
|
-
:after_exit => :after_exit_open
|
19
|
-
|
20
|
-
state :closed,
|
21
|
-
:before_enter => :before_enter_closed,
|
22
|
-
:enter => :enter_closed,
|
23
|
-
:after_enter => :after_enter_closed,
|
24
|
-
:before_exit => :before_exit_closed,
|
25
|
-
:exit => :exit_closed,
|
26
|
-
:after_exit => :after_exit_closed
|
27
|
-
|
28
|
-
event :close, :before => :before, :after => :after, :guard => :event_guard do
|
29
|
-
transitions :to => :closed, :from => [:open], :after => :transitioning do
|
30
|
-
guard do
|
31
|
-
transition_guard
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
event :open, :before => :before, :after => :after do
|
37
|
-
transitions :to => :open, :from => :closed
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def log(text)
|
42
|
-
puts text if @log
|
43
|
-
end
|
44
|
-
|
45
|
-
def before_enter_open; log('before_enter_open'); end
|
46
|
-
def enter_open; log('enter_open'); end
|
47
|
-
def before_exit_open; log('before_exit_open'); end
|
48
|
-
def after_enter_open; log('after_enter_open'); end
|
49
|
-
def exit_open; log('exit_open'); end
|
50
|
-
def after_exit_open; log('after_exit_open'); end
|
51
|
-
|
52
|
-
def before_enter_closed; log('before_enter_closed'); end
|
53
|
-
def enter_closed; log('enter_closed'); end
|
54
|
-
def before_exit_closed; log('before_exit_closed'); end
|
55
|
-
def exit_closed; log('exit_closed'); end
|
56
|
-
def after_enter_closed; log('after_enter_closed'); end
|
57
|
-
def after_exit_closed; log('after_exit_closed'); end
|
58
|
-
|
59
|
-
def event_guard; log('event_guard'); !@fail_event_guard; end
|
60
|
-
def transition_guard; log('transition_guard'); !@fail_transition_guard; end
|
61
|
-
def transitioning; log('transitioning'); end
|
62
|
-
|
63
|
-
def before; log('before'); end
|
64
|
-
def after; log('after'); end
|
65
|
-
end
|
66
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
module Callbacks
|
2
|
-
class MultipleTransitionsTransitionGuard
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
def initialize(options={})
|
6
|
-
@fail_event_guard = options[:fail_event_guard]
|
7
|
-
@fail_transition_guard = options[:fail_transition_guard]
|
8
|
-
@log = options[:log]
|
9
|
-
end
|
10
|
-
|
11
|
-
aasm do
|
12
|
-
state :open, :initial => true,
|
13
|
-
:before_enter => :before_enter_open,
|
14
|
-
:enter => :enter_open,
|
15
|
-
:after_enter => :after_enter_open,
|
16
|
-
:before_exit => :before_exit_open,
|
17
|
-
:exit => :exit_open,
|
18
|
-
:after_exit => :after_exit_open
|
19
|
-
|
20
|
-
state :closed,
|
21
|
-
:before_enter => :before_enter_closed,
|
22
|
-
:enter => :enter_closed,
|
23
|
-
:after_enter => :after_enter_closed,
|
24
|
-
:before_exit => :before_exit_closed,
|
25
|
-
:exit => :exit_closed,
|
26
|
-
:after_exit => :after_exit_closed
|
27
|
-
|
28
|
-
state :failed
|
29
|
-
|
30
|
-
event :close, :before => :before, :after => :after, :guard => :event_guard do
|
31
|
-
transitions :to => :closed, :from => [:open], :guard => :transition_guard, :after => :transitioning, :success => :success_transition
|
32
|
-
transitions :to => :failed, :from => [:open]
|
33
|
-
end
|
34
|
-
|
35
|
-
event :open, :before => :before, :after => :after do
|
36
|
-
transitions :to => :open, :from => :closed
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def log(text)
|
41
|
-
puts text if @log
|
42
|
-
end
|
43
|
-
|
44
|
-
def before_enter_open; log('before_enter_open'); end
|
45
|
-
def enter_open; log('enter_open'); end
|
46
|
-
def before_exit_open; log('before_exit_open'); end
|
47
|
-
def after_enter_open; log('after_enter_open'); end
|
48
|
-
def exit_open; log('exit_open'); end
|
49
|
-
def after_exit_open; log('after_exit_open'); end
|
50
|
-
|
51
|
-
def before_enter_closed; log('before_enter_closed'); end
|
52
|
-
def enter_closed; log('enter_closed'); end
|
53
|
-
def before_exit_closed; log('before_exit_closed'); end
|
54
|
-
def exit_closed; log('exit_closed'); end
|
55
|
-
def after_enter_closed; log('after_enter_closed'); end
|
56
|
-
def after_exit_closed; log('after_exit_closed'); end
|
57
|
-
|
58
|
-
def event_guard; log('event_guard'); !@fail_event_guard; end
|
59
|
-
def transition_guard; log('transition_guard'); !@fail_transition_guard; end
|
60
|
-
def transitioning; log('transitioning'); end
|
61
|
-
def success_transition; log('transition success'); end
|
62
|
-
|
63
|
-
def before; log('before'); end
|
64
|
-
def after; log('after'); end
|
65
|
-
end
|
66
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
module Callbacks
|
2
|
-
class MultipleTransitionsTransitionGuardMultiple
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
def initialize(options={})
|
6
|
-
@fail_event_guard = options[:fail_event_guard]
|
7
|
-
@fail_transition_guard = options[:fail_transition_guard]
|
8
|
-
@log = options[:log]
|
9
|
-
end
|
10
|
-
|
11
|
-
aasm(:left) do
|
12
|
-
state :open, :initial => true,
|
13
|
-
:before_enter => :before_enter_open,
|
14
|
-
:enter => :enter_open,
|
15
|
-
:after_enter => :after_enter_open,
|
16
|
-
:before_exit => :before_exit_open,
|
17
|
-
:exit => :exit_open,
|
18
|
-
:after_exit => :after_exit_open
|
19
|
-
|
20
|
-
state :closed,
|
21
|
-
:before_enter => :before_enter_closed,
|
22
|
-
:enter => :enter_closed,
|
23
|
-
:after_enter => :after_enter_closed,
|
24
|
-
:before_exit => :before_exit_closed,
|
25
|
-
:exit => :exit_closed,
|
26
|
-
:after_exit => :after_exit_closed
|
27
|
-
|
28
|
-
state :failed
|
29
|
-
|
30
|
-
event :close, :before => :before, :after => :after, :guard => :event_guard do
|
31
|
-
transitions :to => :closed, :from => [:open], :guard => :transition_guard, :after => :transitioning
|
32
|
-
transitions :to => :failed, :from => [:open]
|
33
|
-
end
|
34
|
-
|
35
|
-
event :open, :before => :before, :after => :after do
|
36
|
-
transitions :to => :open, :from => :closed
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def log(text)
|
41
|
-
puts text if @log
|
42
|
-
end
|
43
|
-
|
44
|
-
def before_enter_open; log('before_enter_open'); end
|
45
|
-
def enter_open; log('enter_open'); end
|
46
|
-
def before_exit_open; log('before_exit_open'); end
|
47
|
-
def after_enter_open; log('after_enter_open'); end
|
48
|
-
def exit_open; log('exit_open'); end
|
49
|
-
def after_exit_open; log('after_exit_open'); end
|
50
|
-
|
51
|
-
def before_enter_closed; log('before_enter_closed'); end
|
52
|
-
def enter_closed; log('enter_closed'); end
|
53
|
-
def before_exit_closed; log('before_exit_closed'); end
|
54
|
-
def exit_closed; log('exit_closed'); end
|
55
|
-
def after_enter_closed; log('after_enter_closed'); end
|
56
|
-
def after_exit_closed; log('after_exit_closed'); end
|
57
|
-
|
58
|
-
def event_guard; log('event_guard'); !@fail_event_guard; end
|
59
|
-
def transition_guard; log('transition_guard'); !@fail_transition_guard; end
|
60
|
-
def transitioning; log('transitioning'); end
|
61
|
-
|
62
|
-
def before; log('before'); end
|
63
|
-
def after; log('after'); end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
module Callbacks
|
2
|
-
class PrivateMethod
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
def initialize(options={})
|
6
|
-
@fail_event_guard = options[:fail_event_guard]
|
7
|
-
@fail_transition_guard = options[:fail_transition_guard]
|
8
|
-
@log = options[:log]
|
9
|
-
reset_data
|
10
|
-
end
|
11
|
-
|
12
|
-
def reset_data
|
13
|
-
@data = []
|
14
|
-
end
|
15
|
-
|
16
|
-
def data
|
17
|
-
@data.join(' ')
|
18
|
-
end
|
19
|
-
|
20
|
-
aasm do
|
21
|
-
state :open, :initial => true
|
22
|
-
state :closed
|
23
|
-
|
24
|
-
event :close, :after => :after_event do
|
25
|
-
transitions :to => :closed, :from => [:open]
|
26
|
-
end
|
27
|
-
|
28
|
-
event :open, :after => :after_event do
|
29
|
-
transitions :to => :open, :from => :closed
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def log(text)
|
34
|
-
@data << text
|
35
|
-
puts text if @log
|
36
|
-
end
|
37
|
-
|
38
|
-
def aasm_write_state(*args); log('aasm_write_state'); true; end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
def after_event; log('after_event'); end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
module Callbacks
|
2
|
-
class PrivateMethodMultiple
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
def initialize(options={})
|
6
|
-
@fail_event_guard = options[:fail_event_guard]
|
7
|
-
@fail_transition_guard = options[:fail_transition_guard]
|
8
|
-
@log = options[:log]
|
9
|
-
reset_data
|
10
|
-
end
|
11
|
-
|
12
|
-
def reset_data
|
13
|
-
@data = []
|
14
|
-
end
|
15
|
-
|
16
|
-
def data
|
17
|
-
@data.join(' ')
|
18
|
-
end
|
19
|
-
|
20
|
-
aasm(:left) do
|
21
|
-
state :open, :initial => true
|
22
|
-
state :closed
|
23
|
-
|
24
|
-
event :close, :after => :after_event do
|
25
|
-
transitions :to => :closed, :from => [:open]
|
26
|
-
end
|
27
|
-
|
28
|
-
event :open, :after => :after_event do
|
29
|
-
transitions :to => :open, :from => :closed
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def log(text)
|
34
|
-
@data << text
|
35
|
-
puts text if @log
|
36
|
-
end
|
37
|
-
|
38
|
-
def aasm_write_state(*args); log('aasm_write_state'); true; end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
def after_event; log('after_event'); end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
module Callbacks
|
2
|
-
class WithArgs
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
def initialize(options={})
|
6
|
-
@log = options[:log]
|
7
|
-
reset_data
|
8
|
-
end
|
9
|
-
|
10
|
-
def reset_data
|
11
|
-
@data = []
|
12
|
-
end
|
13
|
-
|
14
|
-
def data
|
15
|
-
@data.join(' ')
|
16
|
-
end
|
17
|
-
|
18
|
-
aasm do
|
19
|
-
state :open, :initial => true,
|
20
|
-
:before_enter => :before_enter_open,
|
21
|
-
:after_enter => :after_enter_open,
|
22
|
-
:before_exit => :before_exit_open,
|
23
|
-
:after_exit => :after_exit_open
|
24
|
-
|
25
|
-
state :closed,
|
26
|
-
:before_enter => :before_enter_closed,
|
27
|
-
:after_enter => :after_enter_closed,
|
28
|
-
:before_exit => :before_exit_closed,
|
29
|
-
:after_exit => :after_exit_closed
|
30
|
-
|
31
|
-
event :close, :before => :before, :after => :after do
|
32
|
-
transitions :to => :closed, :from => [:open], :after => :transition_proc, :success => :transition_success_proc
|
33
|
-
end
|
34
|
-
|
35
|
-
event :open, :before => :before, :after => :after do
|
36
|
-
transitions :to => :open, :from => :closed
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def log(text)
|
41
|
-
@data << text
|
42
|
-
puts text if @log
|
43
|
-
end
|
44
|
-
|
45
|
-
def aasm_write_state(*args); log('aasm_write_state'); true; end
|
46
|
-
|
47
|
-
def before_enter_open(*args); log("before_enter_open(#{args.map(&:inspect).join(',')})"); end
|
48
|
-
def before_exit_open(*args); log("before_exit_open(#{args.map(&:inspect).join(',')})"); end
|
49
|
-
def after_enter_open(*args); log("after_enter_open(#{args.map(&:inspect).join(',')})"); end
|
50
|
-
def after_exit_open(*args); log("after_exit_open(#{args.map(&:inspect).join(',')})"); end
|
51
|
-
|
52
|
-
def before_enter_closed(*args); log("before_enter_closed(#{args.map(&:inspect).join(',')})"); end
|
53
|
-
def before_exit_closed(*args); log("before_enter_closed(#{args.map(&:inspect).join(',')})"); end
|
54
|
-
def after_enter_closed(*args); log("after_enter_closed(#{args.map(&:inspect).join(',')})"); end
|
55
|
-
def after_exit_closed(*args); log("after_exit_closed(#{args.map(&:inspect).join(',')})"); end
|
56
|
-
|
57
|
-
def before(arg1, *args); log("before(#{arg1.inspect},#{args.map(&:inspect).join(',')})"); end
|
58
|
-
def transition_proc(arg1, arg2); log("transition_proc(#{arg1.inspect},#{arg2.inspect})"); end
|
59
|
-
def after(*args); log("after(#{args.map(&:inspect).join(',')})"); end
|
60
|
-
def transition_success_proc(*args); log("transition_success(#{args.map(&:inspect).join(',')})"); end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
module Callbacks
|
2
|
-
class WithArgsMultiple
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
def initialize(options={})
|
6
|
-
@log = options[:log]
|
7
|
-
reset_data
|
8
|
-
end
|
9
|
-
|
10
|
-
def reset_data
|
11
|
-
@data = []
|
12
|
-
end
|
13
|
-
|
14
|
-
def data
|
15
|
-
@data.join(' ')
|
16
|
-
end
|
17
|
-
|
18
|
-
aasm(:left) do
|
19
|
-
state :open, :initial => true,
|
20
|
-
:before_enter => :before_enter_open,
|
21
|
-
:after_enter => :after_enter_open,
|
22
|
-
:before_exit => :before_exit_open,
|
23
|
-
:after_exit => :after_exit_open
|
24
|
-
|
25
|
-
state :closed,
|
26
|
-
:before_enter => :before_enter_closed,
|
27
|
-
:after_enter => :after_enter_closed,
|
28
|
-
:before_exit => :before_exit_closed,
|
29
|
-
:after_exit => :after_exit_closed
|
30
|
-
|
31
|
-
event :close, :before => :before, :after => :after do
|
32
|
-
transitions :to => :closed, :from => [:open], :after => :transition_proc
|
33
|
-
end
|
34
|
-
|
35
|
-
event :open, :before => :before, :after => :after do
|
36
|
-
transitions :to => :open, :from => :closed
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def log(text)
|
41
|
-
@data << text
|
42
|
-
puts text if @log
|
43
|
-
end
|
44
|
-
|
45
|
-
def aasm_write_state(*args); log('aasm_write_state'); true; end
|
46
|
-
|
47
|
-
def before_enter_open(*args); log("before_enter_open(#{args.map(&:inspect).join(',')})"); end
|
48
|
-
def before_exit_open(*args); log("before_exit_open(#{args.map(&:inspect).join(',')})"); end
|
49
|
-
def after_enter_open(*args); log("after_enter_open(#{args.map(&:inspect).join(',')})"); end
|
50
|
-
def after_exit_open(*args); log("after_exit_open(#{args.map(&:inspect).join(',')})"); end
|
51
|
-
|
52
|
-
def before_enter_closed(*args); log("before_enter_closed(#{args.map(&:inspect).join(',')})"); end
|
53
|
-
def before_exit_closed(*args); log("before_enter_closed(#{args.map(&:inspect).join(',')})"); end
|
54
|
-
def after_enter_closed(*args); log("after_enter_closed(#{args.map(&:inspect).join(',')})"); end
|
55
|
-
def after_exit_closed(*args); log("after_exit_closed(#{args.map(&:inspect).join(',')})"); end
|
56
|
-
|
57
|
-
def before(arg1, *args); log("before(#{arg1.inspect},#{args.map(&:inspect).join(',')})"); end
|
58
|
-
def transition_proc(arg1, arg2); log("transition_proc(#{arg1.inspect},#{arg2.inspect})"); end
|
59
|
-
def after(*args); log("after(#{args.map(&:inspect).join(',')})"); end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module Callbacks
|
2
|
-
class WithStateArg
|
3
|
-
|
4
|
-
include AASM
|
5
|
-
|
6
|
-
aasm do
|
7
|
-
state :open, :initial => true
|
8
|
-
state :closed
|
9
|
-
state :out_to_lunch
|
10
|
-
|
11
|
-
event :close, :before => :before_method, :after => :after_method do
|
12
|
-
transitions :to => :closed, :from => [:open], :after => :transition_method, :success => :success_method
|
13
|
-
transitions :to => :out_to_lunch, :from => [:open], :after => :transition_method2, :success => :success_method2
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def before_method(arg); end
|
18
|
-
|
19
|
-
def after_method(arg); end
|
20
|
-
|
21
|
-
def transition_method(arg); end
|
22
|
-
|
23
|
-
def transition_method2(arg); end
|
24
|
-
|
25
|
-
def success_method(arg); end
|
26
|
-
|
27
|
-
def success_method2(arg); end
|
28
|
-
|
29
|
-
end
|
30
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module Callbacks
|
2
|
-
class WithStateArgMultiple
|
3
|
-
|
4
|
-
include AASM
|
5
|
-
|
6
|
-
aasm(:left) do
|
7
|
-
state :open, :initial => true
|
8
|
-
state :closed
|
9
|
-
state :out_to_lunch
|
10
|
-
|
11
|
-
event :close, :before => :before_method, :after => :after_method do
|
12
|
-
transitions :to => :closed, :from => [:open], :after => :transition_method
|
13
|
-
transitions :to => :out_to_lunch, :from => [:open], :after => :transition_method2
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def before_method(arg); end
|
18
|
-
|
19
|
-
def after_method(arg); end
|
20
|
-
|
21
|
-
def transition_method(arg); end
|
22
|
-
|
23
|
-
def transition_method2(arg); end
|
24
|
-
|
25
|
-
end
|
26
|
-
end
|
@@ -1,222 +0,0 @@
|
|
1
|
-
class ComplexExample
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
attr_accessor :activation_code, :activated_at, :deleted_at
|
5
|
-
|
6
|
-
aasm do
|
7
|
-
state :passive
|
8
|
-
state :pending, :initial => true, :before_enter => :make_activation_code
|
9
|
-
state :active, :before_enter => :do_activate
|
10
|
-
state :suspended
|
11
|
-
state :deleted, :before_enter => :do_delete#, :exit => :do_undelete
|
12
|
-
state :waiting
|
13
|
-
|
14
|
-
event :register do
|
15
|
-
transitions :from => :passive, :to => :pending do
|
16
|
-
guard do
|
17
|
-
can_register?
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
event :activate do
|
23
|
-
transitions :from => :pending, :to => :active
|
24
|
-
end
|
25
|
-
|
26
|
-
event :suspend do
|
27
|
-
transitions :from => [:passive, :pending, :active], :to => :suspended
|
28
|
-
end
|
29
|
-
|
30
|
-
event :delete do
|
31
|
-
transitions :from => [:passive, :pending, :active, :suspended], :to => :deleted
|
32
|
-
end
|
33
|
-
|
34
|
-
# a dummy event that can never happen
|
35
|
-
event :unpassify do
|
36
|
-
transitions :from => :passive, :to => :active, :guard => Proc.new {|u| false }
|
37
|
-
end
|
38
|
-
|
39
|
-
event :unsuspend do
|
40
|
-
transitions :from => :suspended, :to => :active, :guard => Proc.new { has_activated? }
|
41
|
-
transitions :from => :suspended, :to => :pending, :guard => :has_activation_code?
|
42
|
-
transitions :from => :suspended, :to => :passive
|
43
|
-
end
|
44
|
-
|
45
|
-
event :wait do
|
46
|
-
transitions :from => :suspended, :to => :waiting, :guard => :if_polite?
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def initialize
|
51
|
-
# the AR backend uses a before_validate_on_create :aasm_ensure_initial_state
|
52
|
-
# lets do something similar here for testing purposes.
|
53
|
-
aasm.enter_initial_state
|
54
|
-
end
|
55
|
-
|
56
|
-
def make_activation_code
|
57
|
-
@activation_code = 'moo'
|
58
|
-
end
|
59
|
-
|
60
|
-
def do_activate
|
61
|
-
@activated_at = Time.now
|
62
|
-
@activation_code = nil
|
63
|
-
end
|
64
|
-
|
65
|
-
def do_delete
|
66
|
-
@deleted_at = Time.now
|
67
|
-
end
|
68
|
-
|
69
|
-
def do_undelete
|
70
|
-
@deleted_at = false
|
71
|
-
end
|
72
|
-
|
73
|
-
def can_register?
|
74
|
-
true
|
75
|
-
end
|
76
|
-
|
77
|
-
def has_activated?
|
78
|
-
!!@activated_at
|
79
|
-
end
|
80
|
-
|
81
|
-
def has_activation_code?
|
82
|
-
!!@activation_code
|
83
|
-
end
|
84
|
-
|
85
|
-
def if_polite?(phrase = nil)
|
86
|
-
phrase == :please
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
class ComplexExampleMultiple
|
91
|
-
include AASM
|
92
|
-
|
93
|
-
attr_accessor :activation_code, :activated_at, :deleted_at
|
94
|
-
|
95
|
-
aasm(:left) do
|
96
|
-
state :passive
|
97
|
-
state :pending, :initial => true, :before_enter => :make_activation_code
|
98
|
-
state :active, :before_enter => :do_activate
|
99
|
-
state :suspended
|
100
|
-
state :deleted, :before_enter => :do_delete#, :exit => :do_undelete
|
101
|
-
state :waiting
|
102
|
-
|
103
|
-
event :left_register do
|
104
|
-
transitions :from => :passive, :to => :pending do
|
105
|
-
guard do
|
106
|
-
can_register?
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
event :left_activate do
|
112
|
-
transitions :from => :pending, :to => :active
|
113
|
-
end
|
114
|
-
|
115
|
-
event :left_suspend do
|
116
|
-
transitions :from => [:passive, :pending, :active], :to => :suspended
|
117
|
-
end
|
118
|
-
|
119
|
-
event :left_delete do
|
120
|
-
transitions :from => [:passive, :pending, :active, :suspended], :to => :deleted
|
121
|
-
end
|
122
|
-
|
123
|
-
# a dummy event that can never happen
|
124
|
-
event :left_unpassify do
|
125
|
-
transitions :from => :passive, :to => :active, :guard => Proc.new {|u| false }
|
126
|
-
end
|
127
|
-
|
128
|
-
event :left_unsuspend do
|
129
|
-
transitions :from => :suspended, :to => :active, :guard => Proc.new { has_activated? }
|
130
|
-
transitions :from => :suspended, :to => :pending, :guard => :has_activation_code?
|
131
|
-
transitions :from => :suspended, :to => :passive
|
132
|
-
end
|
133
|
-
|
134
|
-
event :left_wait do
|
135
|
-
transitions :from => :suspended, :to => :waiting, :guard => :if_polite?
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
aasm(:right) do
|
140
|
-
state :passive
|
141
|
-
state :pending, :initial => true, :before_enter => :make_activation_code
|
142
|
-
state :active, :before_enter => :do_activate
|
143
|
-
state :suspended
|
144
|
-
state :deleted, :before_enter => :do_delete#, :exit => :do_undelete
|
145
|
-
state :waiting
|
146
|
-
|
147
|
-
event :right_register do
|
148
|
-
transitions :from => :passive, :to => :pending do
|
149
|
-
guard do
|
150
|
-
can_register?
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
event :right_activate do
|
156
|
-
transitions :from => :pending, :to => :active
|
157
|
-
end
|
158
|
-
|
159
|
-
event :right_suspend do
|
160
|
-
transitions :from => [:passive, :pending, :active], :to => :suspended
|
161
|
-
end
|
162
|
-
|
163
|
-
event :right_delete do
|
164
|
-
transitions :from => [:passive, :pending, :active, :suspended], :to => :deleted
|
165
|
-
end
|
166
|
-
|
167
|
-
# a dummy event that can never happen
|
168
|
-
event :right_unpassify do
|
169
|
-
transitions :from => :passive, :to => :active, :guard => Proc.new {|u| false }
|
170
|
-
end
|
171
|
-
|
172
|
-
event :right_unsuspend do
|
173
|
-
transitions :from => :suspended, :to => :active, :guard => Proc.new { has_activated? }
|
174
|
-
transitions :from => :suspended, :to => :pending, :guard => :has_activation_code?
|
175
|
-
transitions :from => :suspended, :to => :passive
|
176
|
-
end
|
177
|
-
|
178
|
-
event :right_wait do
|
179
|
-
transitions :from => :suspended, :to => :waiting, :guard => :if_polite?
|
180
|
-
end
|
181
|
-
end # right
|
182
|
-
|
183
|
-
def initialize
|
184
|
-
# the AR backend uses a before_validate_on_create :aasm_ensure_initial_state
|
185
|
-
# lets do something similar here for testing purposes.
|
186
|
-
aasm(:left).enter_initial_state
|
187
|
-
aasm(:right).enter_initial_state
|
188
|
-
end
|
189
|
-
|
190
|
-
def make_activation_code
|
191
|
-
@activation_code = @activation_code ? @activation_code + '2' : '1'
|
192
|
-
end
|
193
|
-
|
194
|
-
def do_activate
|
195
|
-
@activated_at = Time.now
|
196
|
-
@activation_code = nil
|
197
|
-
end
|
198
|
-
|
199
|
-
def do_delete
|
200
|
-
@deleted_at = Time.now
|
201
|
-
end
|
202
|
-
|
203
|
-
def do_undelete
|
204
|
-
@deleted_at = false
|
205
|
-
end
|
206
|
-
|
207
|
-
def can_register?
|
208
|
-
true
|
209
|
-
end
|
210
|
-
|
211
|
-
def has_activated?
|
212
|
-
!!@activated_at
|
213
|
-
end
|
214
|
-
|
215
|
-
def has_activation_code?
|
216
|
-
!!@activation_code
|
217
|
-
end
|
218
|
-
|
219
|
-
def if_polite?(phrase = nil)
|
220
|
-
phrase == :please
|
221
|
-
end
|
222
|
-
end
|