aasm 4.12.2 → 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/LICENSE +1 -1
- data/README.md +393 -116
- data/lib/aasm/aasm.rb +30 -27
- data/lib/aasm/base.rb +64 -11
- data/lib/aasm/configuration.rb +6 -0
- data/lib/aasm/core/event.rb +26 -30
- data/lib/aasm/core/invoker.rb +129 -0
- data/lib/aasm/core/invokers/base_invoker.rb +75 -0
- data/lib/aasm/core/invokers/class_invoker.rb +52 -0
- data/lib/aasm/core/invokers/literal_invoker.rb +49 -0
- data/lib/aasm/core/invokers/proc_invoker.rb +59 -0
- data/lib/aasm/core/state.rb +16 -14
- data/lib/aasm/core/transition.rb +8 -69
- data/lib/aasm/dsl_helper.rb +24 -22
- data/lib/aasm/errors.rb +5 -3
- data/lib/aasm/instance_base.rb +34 -3
- 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 +105 -0
- data/lib/aasm/persistence/orm.rb +26 -14
- data/lib/aasm/persistence/plain_persistence.rb +2 -1
- data/lib/aasm/persistence/redis_persistence.rb +1 -1
- data/lib/aasm/persistence/sequel_persistence.rb +0 -1
- data/lib/aasm/persistence.rb +3 -0
- data/lib/aasm/rspec/allow_event.rb +5 -1
- data/lib/aasm/rspec/allow_transition_to.rb +5 -1
- data/lib/aasm/rspec/transition_from.rb +5 -1
- data/lib/aasm/version.rb +1 -1
- data/lib/aasm.rb +5 -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
- data/lib/generators/nobrainer/aasm_generator.rb +28 -0
- data/lib/motion-aasm.rb +1 -0
- metadata +42 -343
- data/.document +0 -6
- data/.gitignore +0 -20
- data/.travis.yml +0 -52
- data/API +0 -34
- data/Appraisals +0 -43
- data/CHANGELOG.md +0 -365
- data/CODE_OF_CONDUCT.md +0 -13
- data/CONTRIBUTING.md +0 -24
- data/Gemfile +0 -7
- 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/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_5.0.gemfile +0 -14
- 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/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 -99
- 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/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 -15
- 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 -7
- data/spec/spec_helpers/dynamoid.rb +0 -33
- data/spec/spec_helpers/mongoid.rb +0 -7
- data/spec/spec_helpers/redis.rb +0 -15
- 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 -84
- data/spec/unit/complex_multiple_example_spec.rb +0 -99
- 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/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 -721
- 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 -204
- data/spec/unit/persistence/mongoid_persistence_spec.rb +0 -169
- 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 -79
- 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,17 +0,0 @@
|
|
1
|
-
class GuardArgumentsCheck
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm do
|
5
|
-
state :new, :reviewed, :finalized
|
6
|
-
|
7
|
-
event :mark_as_reviewed,
|
8
|
-
:guard => proc { |*args| arguments_list(*args) } do
|
9
|
-
transitions :from => :new, :to => :reviewed
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def arguments_list(arg1, arg2)
|
14
|
-
return false unless arg1.nil?
|
15
|
-
true
|
16
|
-
end
|
17
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
class GuardWithParams
|
2
|
-
include AASM
|
3
|
-
aasm do
|
4
|
-
state :new, :reviewed, :finalized
|
5
|
-
|
6
|
-
event :mark_as_reviewed do
|
7
|
-
transitions :from => :new, :to => :reviewed, :guards => [:user_is_manager?]
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def user_is_manager?(user)
|
12
|
-
ok = false
|
13
|
-
if user && user.has_role?(:manager)
|
14
|
-
ok = true
|
15
|
-
end
|
16
|
-
return ok
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
class GuardParamsClass
|
21
|
-
def has_role?(role)
|
22
|
-
true
|
23
|
-
end
|
24
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
class GuardWithParamsMultiple
|
2
|
-
include AASM
|
3
|
-
aasm(:left) do
|
4
|
-
state :new, :reviewed, :finalized
|
5
|
-
|
6
|
-
event :mark_as_reviewed do
|
7
|
-
transitions :from => :new, :to => :reviewed, :guards => [:user_is_manager?]
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def user_is_manager?(user)
|
12
|
-
ok = false
|
13
|
-
if user.has_role? :manager
|
14
|
-
ok = true
|
15
|
-
end
|
16
|
-
return ok
|
17
|
-
end
|
18
|
-
end
|
data/spec/models/guardian.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
class Guardian
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
def inner_guard(options={})
|
5
|
-
end
|
6
|
-
|
7
|
-
aasm do
|
8
|
-
state :alpha, :initial => true
|
9
|
-
state :beta
|
10
|
-
|
11
|
-
event :use_one_guard_that_succeeds do
|
12
|
-
transitions :from => :alpha, :to => :beta, :guard => :succeed
|
13
|
-
end
|
14
|
-
event :use_one_guard_that_fails do
|
15
|
-
transitions :from => :alpha, :to => :beta, :guard => :fail
|
16
|
-
end
|
17
|
-
|
18
|
-
event :use_proc_guard_with_params do
|
19
|
-
transitions :from => :alpha, :to => :beta, :guard => Proc.new { |options={}| inner_guard(options) }
|
20
|
-
end
|
21
|
-
event :use_lambda_guard_with_params do
|
22
|
-
transitions :from => :alpha, :to => :beta, :guard => lambda { |options={}| inner_guard(options) }
|
23
|
-
end
|
24
|
-
|
25
|
-
event :use_guards_that_succeed do
|
26
|
-
transitions :from => :alpha, :to => :beta, :guards => [:succeed, :another_succeed]
|
27
|
-
end
|
28
|
-
event :use_guards_where_the_first_fails do
|
29
|
-
transitions :from => :alpha, :to => :beta, :guards => [:succeed, :fail]
|
30
|
-
end
|
31
|
-
event :use_guards_where_the_second_fails do
|
32
|
-
transitions :from => :alpha, :to => :beta, :guards => [:fail, :succeed]
|
33
|
-
end
|
34
|
-
|
35
|
-
event :use_event_guards_that_succeed, :guards => [:succeed, :another_succeed] do
|
36
|
-
transitions :from => :alpha, :to => :beta
|
37
|
-
end
|
38
|
-
event :use_event_and_transition_guards_that_succeed, :guards => [:succeed, :another_succeed] do
|
39
|
-
transitions :from => :alpha, :to => :beta, :guards => [:more_succeed]
|
40
|
-
end
|
41
|
-
event :use_event_guards_where_the_first_fails, :guards => [:succeed, :fail] do
|
42
|
-
transitions :from => :alpha, :to => :beta
|
43
|
-
end
|
44
|
-
event :use_event_guards_where_the_second_fails, :guards => [:fail, :succeed] do
|
45
|
-
transitions :from => :alpha, :to => :beta, :guard => :another_succeed
|
46
|
-
end
|
47
|
-
event :use_event_and_transition_guards_where_third_fails, :guards => [:succeed, :another_succeed] do
|
48
|
-
transitions :from => :alpha, :to => :beta, :guards => [:fail]
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def fail; false; end
|
53
|
-
|
54
|
-
def succeed; true; end
|
55
|
-
def another_succeed; true; end
|
56
|
-
def more_succeed; true; end
|
57
|
-
|
58
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
class GuardianMultiple
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm(:left) do
|
5
|
-
state :alpha, :initial => true
|
6
|
-
state :beta
|
7
|
-
|
8
|
-
event :use_one_guard_that_succeeds do
|
9
|
-
transitions :from => :alpha, :to => :beta, :guard => :succeed
|
10
|
-
end
|
11
|
-
event :use_one_guard_that_fails do
|
12
|
-
transitions :from => :alpha, :to => :beta, :guard => :fail
|
13
|
-
end
|
14
|
-
|
15
|
-
event :use_guards_that_succeed do
|
16
|
-
transitions :from => :alpha, :to => :beta, :guards => [:succeed, :another_succeed]
|
17
|
-
end
|
18
|
-
event :use_guards_where_the_first_fails do
|
19
|
-
transitions :from => :alpha, :to => :beta, :guards => [:succeed, :fail]
|
20
|
-
end
|
21
|
-
event :use_guards_where_the_second_fails do
|
22
|
-
transitions :from => :alpha, :to => :beta, :guards => [:fail, :succeed]
|
23
|
-
end
|
24
|
-
|
25
|
-
event :use_event_guards_that_succeed, :guards => [:succeed, :another_succeed] do
|
26
|
-
transitions :from => :alpha, :to => :beta
|
27
|
-
end
|
28
|
-
event :use_event_and_transition_guards_that_succeed, :guards => [:succeed, :another_succeed] do
|
29
|
-
transitions :from => :alpha, :to => :beta, :guards => [:more_succeed]
|
30
|
-
end
|
31
|
-
event :use_event_guards_where_the_first_fails, :guards => [:succeed, :fail] do
|
32
|
-
transitions :from => :alpha, :to => :beta
|
33
|
-
end
|
34
|
-
event :use_event_guards_where_the_second_fails, :guards => [:fail, :succeed] do
|
35
|
-
transitions :from => :alpha, :to => :beta, :guard => :another_succeed
|
36
|
-
end
|
37
|
-
event :use_event_and_transition_guards_where_third_fails, :guards => [:succeed, :another_succeed] do
|
38
|
-
transitions :from => :alpha, :to => :beta, :guards => [:fail]
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def fail; false; end
|
43
|
-
|
44
|
-
def succeed; true; end
|
45
|
-
def another_succeed; true; end
|
46
|
-
def more_succeed; true; end
|
47
|
-
|
48
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
class GuardianWithoutFromSpecified
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm do
|
5
|
-
state :alpha, :initial => true
|
6
|
-
state :beta
|
7
|
-
state :gamma
|
8
|
-
|
9
|
-
event :use_guards_where_the_first_fails do
|
10
|
-
transitions :to => :beta, :guard => :fail
|
11
|
-
transitions :to => :gamma, :guard => :succeed
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
|
16
|
-
def fail; false; end
|
17
|
-
def succeed; true; end
|
18
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
class InitialStateProc
|
2
|
-
RICH = 1_000_000
|
3
|
-
|
4
|
-
attr_accessor :balance
|
5
|
-
|
6
|
-
include AASM
|
7
|
-
aasm do
|
8
|
-
state :retired
|
9
|
-
state :selling_bad_mortgages
|
10
|
-
initial_state Proc.new { |banker| banker.rich? ? :retired : :selling_bad_mortgages }
|
11
|
-
end
|
12
|
-
|
13
|
-
def initialize(balance = 0); self.balance = balance; end
|
14
|
-
def rich?; self.balance >= RICH; end
|
15
|
-
end
|
16
|
-
|
17
|
-
class InitialStateProcMultiple
|
18
|
-
RICH = 1_000_000
|
19
|
-
|
20
|
-
attr_accessor :balance
|
21
|
-
|
22
|
-
include AASM
|
23
|
-
aasm(:left) do
|
24
|
-
state :retired
|
25
|
-
state :selling_bad_mortgages
|
26
|
-
initial_state Proc.new { |banker| banker.rich? ? :retired : :selling_bad_mortgages }
|
27
|
-
end
|
28
|
-
|
29
|
-
def initialize(balance = 0); self.balance = balance; end
|
30
|
-
def rich?; self.balance >= RICH; end
|
31
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
class ComplexMongoidExample
|
2
|
-
include Mongoid::Document
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
field :left, :type => String
|
6
|
-
field :right, :type => String
|
7
|
-
|
8
|
-
aasm :left, :column => 'left' do
|
9
|
-
state :one, :initial => true
|
10
|
-
state :two
|
11
|
-
state :three
|
12
|
-
|
13
|
-
event :increment do
|
14
|
-
transitions :from => :one, :to => :two
|
15
|
-
transitions :from => :two, :to => :three
|
16
|
-
end
|
17
|
-
event :reset do
|
18
|
-
transitions :from => :three, :to => :one
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
aasm :right, :column => 'right' do
|
23
|
-
state :alpha, :initial => true
|
24
|
-
state :beta
|
25
|
-
state :gamma
|
26
|
-
|
27
|
-
event :level_up do
|
28
|
-
transitions :from => :alpha, :to => :beta
|
29
|
-
transitions :from => :beta, :to => :gamma
|
30
|
-
end
|
31
|
-
event :level_down do
|
32
|
-
transitions :from => :gamma, :to => :beta
|
33
|
-
transitions :from => :beta, :to => :alpha
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
class InvalidPersistorMongoid
|
2
|
-
include Mongoid::Document
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
field :name
|
6
|
-
field :status
|
7
|
-
|
8
|
-
aasm :left, column: :status, skip_validation_on_save: true do
|
9
|
-
state :sleeping, :initial => true
|
10
|
-
state :running
|
11
|
-
event :run do
|
12
|
-
transitions :to => :running, :from => :sleeping
|
13
|
-
end
|
14
|
-
event :sleep do
|
15
|
-
transitions :to => :sleeping, :from => :running
|
16
|
-
end
|
17
|
-
end
|
18
|
-
validates_presence_of :name
|
19
|
-
end
|
20
|
-
|
21
|
-
class MultipleInvalidPersistorMongoid
|
22
|
-
include Mongoid::Document
|
23
|
-
include AASM
|
24
|
-
|
25
|
-
field :name
|
26
|
-
field :status
|
27
|
-
|
28
|
-
aasm :left, column: :status, skip_validation_on_save: true do
|
29
|
-
state :sleeping, :initial => true
|
30
|
-
state :running
|
31
|
-
event :run do
|
32
|
-
transitions :to => :running, :from => :sleeping
|
33
|
-
end
|
34
|
-
event :sleep do
|
35
|
-
transitions :to => :sleeping, :from => :running
|
36
|
-
end
|
37
|
-
end
|
38
|
-
validates_presence_of :name
|
39
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
class Parent
|
2
|
-
include Mongoid::Document
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
field :status, :type => String
|
6
|
-
has_many :childs
|
7
|
-
|
8
|
-
aasm column: :status do
|
9
|
-
state :unknown_scope
|
10
|
-
state :new
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class Child
|
15
|
-
include Mongoid::Document
|
16
|
-
include AASM
|
17
|
-
field :parent_id
|
18
|
-
|
19
|
-
field :status, :type => String
|
20
|
-
belongs_to :parent
|
21
|
-
|
22
|
-
aasm column: :status do
|
23
|
-
state :unknown_scope
|
24
|
-
state :new
|
25
|
-
end
|
26
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
class NoScopeMongoid
|
2
|
-
include Mongoid::Document
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
field :status, :type => String
|
6
|
-
|
7
|
-
aasm :create_scopes => false, :column => :status do
|
8
|
-
state :ignored_scope
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
class NoScopeMongoidMultiple
|
13
|
-
include Mongoid::Document
|
14
|
-
include AASM
|
15
|
-
|
16
|
-
field :status, :type => String
|
17
|
-
|
18
|
-
aasm :left, :create_scopes => false, :column => :status do
|
19
|
-
state :ignored_scope
|
20
|
-
end
|
21
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
class SilentPersistorMongoid
|
2
|
-
include Mongoid::Document
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
field :name
|
6
|
-
field :status
|
7
|
-
|
8
|
-
aasm :left, column: :status, whiny_persistence: false do
|
9
|
-
state :sleeping, :initial => true
|
10
|
-
state :running
|
11
|
-
event :run do
|
12
|
-
transitions :to => :running, :from => :sleeping
|
13
|
-
end
|
14
|
-
event :sleep do
|
15
|
-
transitions :to => :sleeping, :from => :running
|
16
|
-
end
|
17
|
-
end
|
18
|
-
validates_presence_of :name
|
19
|
-
end
|
20
|
-
|
21
|
-
class MultipleSilentPersistorMongoid
|
22
|
-
include Mongoid::Document
|
23
|
-
include AASM
|
24
|
-
|
25
|
-
field :name
|
26
|
-
field :status
|
27
|
-
|
28
|
-
aasm :left, column: :status, whiny_persistence: false do
|
29
|
-
state :sleeping, :initial => true
|
30
|
-
state :running
|
31
|
-
event :run do
|
32
|
-
transitions :to => :running, :from => :sleeping
|
33
|
-
end
|
34
|
-
event :sleep do
|
35
|
-
transitions :to => :sleeping, :from => :running
|
36
|
-
end
|
37
|
-
end
|
38
|
-
validates_presence_of :name
|
39
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
class SimpleMongoid
|
2
|
-
include Mongoid::Document
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
field :status, :type => String
|
6
|
-
|
7
|
-
aasm column: :status do
|
8
|
-
state :unknown_scope, :another_unknown_scope
|
9
|
-
state :new
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
class SimpleMongoidMultiple
|
14
|
-
include Mongoid::Document
|
15
|
-
include AASM
|
16
|
-
|
17
|
-
field :status, :type => String
|
18
|
-
|
19
|
-
aasm :left, column: :status do
|
20
|
-
state :unknown_scope, :another_unknown_scope
|
21
|
-
state :new
|
22
|
-
end
|
23
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
class SimpleNewDslMongoid
|
2
|
-
include Mongoid::Document
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
field :status, :type => String
|
6
|
-
|
7
|
-
aasm :column => :status
|
8
|
-
aasm do
|
9
|
-
state :unknown_scope, :initial => true
|
10
|
-
state :new
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class SimpleNewDslMongoidMultiple
|
15
|
-
include Mongoid::Document
|
16
|
-
include AASM
|
17
|
-
|
18
|
-
field :status, :type => String
|
19
|
-
|
20
|
-
aasm :left, :column => :status
|
21
|
-
aasm :left do
|
22
|
-
state :unknown_scope, :initial => true
|
23
|
-
state :new
|
24
|
-
end
|
25
|
-
end
|
@@ -1,100 +0,0 @@
|
|
1
|
-
class ValidatorMongoid
|
2
|
-
include Mongoid::Document
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
field :name
|
6
|
-
field :status
|
7
|
-
|
8
|
-
attr_accessor :invalid
|
9
|
-
|
10
|
-
validate do |model|
|
11
|
-
errors.add(:validator, "invalid") if invalid
|
12
|
-
end
|
13
|
-
|
14
|
-
include AASM
|
15
|
-
|
16
|
-
aasm :column => :status, :whiny_persistence => true do
|
17
|
-
before_all_transactions :before_all_transactions
|
18
|
-
after_all_transactions :after_all_transactions
|
19
|
-
|
20
|
-
state :sleeping, :initial => true
|
21
|
-
state :running
|
22
|
-
state :failed, :after_enter => :fail
|
23
|
-
|
24
|
-
event :run, :after_commit => :change_name! do
|
25
|
-
transitions :to => :running, :from => :sleeping
|
26
|
-
end
|
27
|
-
|
28
|
-
event :sleep do
|
29
|
-
after_commit do |name|
|
30
|
-
change_name_on_sleep name
|
31
|
-
end
|
32
|
-
transitions :to => :sleeping, :from => :running
|
33
|
-
end
|
34
|
-
|
35
|
-
event :fail do
|
36
|
-
transitions :to => :failed, :from => [:sleeping, :running]
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
validates_presence_of :name
|
41
|
-
|
42
|
-
def change_name!
|
43
|
-
self.name = "name changed"
|
44
|
-
save!
|
45
|
-
end
|
46
|
-
|
47
|
-
def change_name_on_sleep name
|
48
|
-
self.name = name
|
49
|
-
save!
|
50
|
-
end
|
51
|
-
|
52
|
-
def fail
|
53
|
-
raise StandardError.new('failed on purpose')
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
class MultipleValidatorMongoid
|
58
|
-
include Mongoid::Document
|
59
|
-
include AASM
|
60
|
-
|
61
|
-
field :name
|
62
|
-
field :status
|
63
|
-
|
64
|
-
attr_accessor :invalid
|
65
|
-
|
66
|
-
aasm :left, :column => :status, :whiny_persistence => true do
|
67
|
-
state :sleeping, :initial => true
|
68
|
-
state :running
|
69
|
-
state :failed, :after_enter => :fail
|
70
|
-
|
71
|
-
event :run, :after_commit => :change_name! do
|
72
|
-
transitions :to => :running, :from => :sleeping
|
73
|
-
end
|
74
|
-
event :sleep do
|
75
|
-
after_commit do |name|
|
76
|
-
change_name_on_sleep name
|
77
|
-
end
|
78
|
-
transitions :to => :sleeping, :from => :running
|
79
|
-
end
|
80
|
-
event :fail do
|
81
|
-
transitions :to => :failed, :from => [:sleeping, :running]
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
validates_presence_of :name
|
86
|
-
|
87
|
-
def change_name!
|
88
|
-
self.name = "name changed"
|
89
|
-
save!
|
90
|
-
end
|
91
|
-
|
92
|
-
def change_name_on_sleep name
|
93
|
-
self.name = name
|
94
|
-
save!
|
95
|
-
end
|
96
|
-
|
97
|
-
def fail
|
98
|
-
raise StandardError.new('failed on purpose')
|
99
|
-
end
|
100
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
class MultiTransitioner
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
attr_accessor :can_run
|
5
|
-
|
6
|
-
def initialize
|
7
|
-
@can_run = false
|
8
|
-
end
|
9
|
-
|
10
|
-
aasm do
|
11
|
-
state :sleeping, :initial => true
|
12
|
-
state :running
|
13
|
-
state :dancing
|
14
|
-
state :dead
|
15
|
-
|
16
|
-
event :start do
|
17
|
-
transitions :from => :sleeping, :to => :running, guard: :runnable?
|
18
|
-
transitions :from => :sleeping, :to => :dancing
|
19
|
-
end
|
20
|
-
|
21
|
-
event :sleep do
|
22
|
-
transitions to: :sleeping, if: :alive?
|
23
|
-
transitions to: :dead, from: [:running, :dancing]
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def runnable?
|
28
|
-
@can_run
|
29
|
-
end
|
30
|
-
|
31
|
-
def alive?
|
32
|
-
true
|
33
|
-
end
|
34
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
class MultipleTransitionsThatDifferOnlyByGuard
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
attr_accessor :executed_second
|
5
|
-
|
6
|
-
aasm do
|
7
|
-
state :start, :initial => true
|
8
|
-
state :gone
|
9
|
-
|
10
|
-
event :go do
|
11
|
-
transitions :from => :start, :to => :gone, :guard => :returns_false, :after => :this_should_not_execute
|
12
|
-
transitions :from => :start, :to => :gone, :guard => :returns_true, :after => :this_should_execute
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def returns_false
|
17
|
-
false
|
18
|
-
end
|
19
|
-
|
20
|
-
def returns_true
|
21
|
-
true
|
22
|
-
end
|
23
|
-
|
24
|
-
def this_should_not_execute
|
25
|
-
raise RuntimeError, "This should not execute"
|
26
|
-
end
|
27
|
-
|
28
|
-
def this_should_execute
|
29
|
-
self.executed_second = true
|
30
|
-
end
|
31
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
class NamespacedMultipleExample
|
2
|
-
include AASM
|
3
|
-
aasm(:status) do
|
4
|
-
state :unapproved, :initial => true
|
5
|
-
state :approved
|
6
|
-
|
7
|
-
event :approve do
|
8
|
-
transitions :from => :unapproved, :to => :approved
|
9
|
-
end
|
10
|
-
|
11
|
-
event :unapprove do
|
12
|
-
transitions :from => :approved, :to => :unapproved
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
aasm(:review_status, namespace: :review) do
|
17
|
-
state :unapproved, :initial => true
|
18
|
-
state :approved
|
19
|
-
|
20
|
-
event :approve_review do
|
21
|
-
transitions :from => :unapproved, :to => :approved
|
22
|
-
end
|
23
|
-
|
24
|
-
event :unapprove_review do
|
25
|
-
transitions :from => :approved, :to => :unapproved
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
# Test namespace event methods with suffix (ie may_sell_car?, sell_car!)
|
30
|
-
aasm(:car, namespace: :car) do
|
31
|
-
state :unsold, :initial => true
|
32
|
-
state :sold
|
33
|
-
|
34
|
-
event :sell do
|
35
|
-
transitions :from => :unsold, :to => :sold
|
36
|
-
end
|
37
|
-
|
38
|
-
event :return do
|
39
|
-
transitions :from => :sold, :to => :unsold
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
class NoInitialState
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm do
|
5
|
-
state :read
|
6
|
-
state :ended
|
7
|
-
|
8
|
-
event :foo do
|
9
|
-
transitions :to => :ended, :from => [:read]
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class NoInitialStateMultiple
|
15
|
-
include AASM
|
16
|
-
|
17
|
-
aasm(:left) do
|
18
|
-
state :read
|
19
|
-
state :ended
|
20
|
-
|
21
|
-
event :foo do
|
22
|
-
transitions :to => :ended, :from => [:read]
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module Models
|
2
|
-
class Process
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
aasm do
|
6
|
-
state :sleeping
|
7
|
-
state :running
|
8
|
-
state :suspended
|
9
|
-
|
10
|
-
event :start do
|
11
|
-
transitions :from => :sleeping, :to => :running
|
12
|
-
end
|
13
|
-
|
14
|
-
event :stop do
|
15
|
-
transitions :from => :running, :to => :suspended
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|