aasm 5.3.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 +4 -4
- data/lib/aasm/core/invokers/class_invoker.rb +1 -1
- data/lib/aasm/core/invokers/literal_invoker.rb +3 -1
- data/lib/aasm/errors.rb +1 -0
- data/lib/aasm/instance_base.rb +4 -3
- data/lib/aasm/version.rb +1 -1
- data/lib/generators/aasm/orm_helpers.rb +1 -1
- metadata +4 -410
- data/.document +0 -6
- data/.github/ISSUE_TEMPLATE/bug_report.md +0 -27
- data/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- data/.github/workflows/build.yml +0 -100
- data/.gitignore +0 -20
- data/API +0 -34
- data/Appraisals +0 -51
- data/CHANGELOG.md +0 -464
- data/CODE_OF_CONDUCT.md +0 -13
- data/CONTRIBUTING.md +0 -24
- data/Dockerfile +0 -44
- data/Gemfile +0 -7
- 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 -37
- data/docker-compose.yml +0 -40
- data/gemfiles/norails.gemfile +0 -11
- data/gemfiles/rails_4.2.gemfile +0 -17
- data/gemfiles/rails_4.2_mongoid_5.gemfile +0 -12
- data/gemfiles/rails_4.2_nobrainer.gemfile +0 -10
- data/gemfiles/rails_5.2.gemfile +0 -14
- data/gemfiles/rails_6.0.gemfile +0 -14
- data/gemfiles/rails_6.1.gemfile +0 -14
- data/gemfiles/rails_7.0.gemfile +0 -14
- data/spec/database.rb +0 -57
- data/spec/database.yml +0 -3
- data/spec/en.yml +0 -9
- data/spec/generators/active_record_generator_spec.rb +0 -53
- data/spec/generators/mongoid_generator_spec.rb +0 -31
- data/spec/generators/no_brainer_generator_spec.rb +0 -29
- data/spec/localizer_test_model_deprecated_style.yml +0 -13
- data/spec/localizer_test_model_new_style.yml +0 -11
- data/spec/models/active_record/active_record_callback.rb +0 -93
- 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/instance_level_skip_validation_example.rb +0 -19
- data/spec/models/active_record/invalid_persistor.rb +0 -29
- data/spec/models/active_record/localizer_test_model.rb +0 -42
- data/spec/models/active_record/namespaced.rb +0 -16
- 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/person.rb +0 -23
- 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 -32
- data/spec/models/active_record/thief.rb +0 -29
- data/spec/models/active_record/timestamp_example.rb +0 -16
- 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/work.rb +0 -3
- 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 -34
- data/spec/models/callbacks/with_state_arg_multiple.rb +0 -29
- 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/event_with_keyword_arguments.rb +0 -16
- 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/timestamp_example_mongoid.rb +0 -20
- 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 -23
- 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/timestamps_example.rb +0 -19
- data/spec/models/timestamps_with_named_machine_example.rb +0 -13
- data/spec/models/valid_state_name.rb +0 -23
- data/spec/spec_helper.rb +0 -41
- data/spec/spec_helpers/active_record.rb +0 -8
- data/spec/spec_helpers/dynamoid.rb +0 -39
- 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/abstract_class_spec.rb +0 -27
- data/spec/unit/api_spec.rb +0 -104
- data/spec/unit/basic_two_state_machines_example_spec.rb +0 -10
- data/spec/unit/callback_multiple_spec.rb +0 -304
- data/spec/unit/callbacks_spec.rb +0 -551
- data/spec/unit/complex_example_spec.rb +0 -101
- 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 -394
- data/spec/unit/event_with_keyword_arguments_spec.rb +0 -10
- 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 -205
- data/spec/unit/inspection_spec.rb +0 -153
- 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 -109
- 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 -635
- data/spec/unit/persistence/active_record_persistence_spec.rb +0 -852
- 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 -177
- 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 -88
- data/spec/unit/simple_custom_example_spec.rb +0 -39
- data/spec/unit/simple_example_spec.rb +0 -57
- data/spec/unit/simple_multiple_example_spec.rb +0 -91
- data/spec/unit/state_spec.rb +0 -105
- 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/timestamps_spec.rb +0 -32
- data/spec/unit/transition_spec.rb +0 -436
- data/test/minitest_helper.rb +0 -61
- data/test/unit/minitest_matcher_test.rb +0 -80
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
class ProvidedAndPersistedState < ActiveRecord::Base
|
|
2
|
-
attr_accessor :transient_store, :persisted_store
|
|
3
|
-
include AASM
|
|
4
|
-
aasm do
|
|
5
|
-
state :alpha, :initial => true
|
|
6
|
-
state :beta
|
|
7
|
-
state :gamma
|
|
8
|
-
event :release do
|
|
9
|
-
transitions :from => [:alpha, :beta, :gamma], :to => :beta
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def aasm_read_state(*args)
|
|
14
|
-
:gamma
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def aasm_write_state(new_state, *args)
|
|
18
|
-
@persisted_store = new_state
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def aasm_write_state_without_persistence(new_state, *args)
|
|
22
|
-
@transient_store = new_state
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
class ReadmeJob < ActiveRecord::Base
|
|
2
|
-
include AASM
|
|
3
|
-
|
|
4
|
-
aasm do
|
|
5
|
-
state :sleeping, :initial => true
|
|
6
|
-
state :running
|
|
7
|
-
state :cleaning
|
|
8
|
-
|
|
9
|
-
event :run do
|
|
10
|
-
transitions :from => :sleeping, :to => :running
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
event :clean do
|
|
14
|
-
transitions :from => :running, :to => :cleaning
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
event :sleep do
|
|
18
|
-
transitions :from => [:running, :cleaning], :to => :sleeping
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
class SilentPersistor < ActiveRecord::Base
|
|
2
|
-
include AASM
|
|
3
|
-
aasm :column => :status, :whiny_persistence => false do
|
|
4
|
-
state :sleeping, :initial => true
|
|
5
|
-
state :running
|
|
6
|
-
event :run do
|
|
7
|
-
transitions :to => :running, :from => :sleeping
|
|
8
|
-
end
|
|
9
|
-
event :sleep do
|
|
10
|
-
transitions :to => :sleeping, :from => :running
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
validates_presence_of :name
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
class MultipleSilentPersistor < ActiveRecord::Base
|
|
17
|
-
include AASM
|
|
18
|
-
aasm :left, :column => :status, :whiny_persistence => false do
|
|
19
|
-
state :sleeping, :initial => true
|
|
20
|
-
state :running
|
|
21
|
-
event :run do
|
|
22
|
-
transitions :to => :running, :from => :sleeping
|
|
23
|
-
end
|
|
24
|
-
event :sleep do
|
|
25
|
-
transitions :to => :sleeping, :from => :running
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
validates_presence_of :name
|
|
29
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
class SimpleNewDsl < ActiveRecord::Base
|
|
2
|
-
include AASM
|
|
3
|
-
aasm :column => :status
|
|
4
|
-
aasm do
|
|
5
|
-
state :unknown_scope, :another_unknown_scope
|
|
6
|
-
state :new
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
class MultipleSimpleNewDsl < ActiveRecord::Base
|
|
11
|
-
include AASM
|
|
12
|
-
aasm :left, :column => :status
|
|
13
|
-
aasm :left do
|
|
14
|
-
state :unknown_scope, :another_unknown_scope
|
|
15
|
-
state :new
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
class AbstractClassDsl < ActiveRecord::Base
|
|
20
|
-
include AASM
|
|
21
|
-
|
|
22
|
-
self.abstract_class = true
|
|
23
|
-
|
|
24
|
-
aasm :column => :status
|
|
25
|
-
aasm do
|
|
26
|
-
state :unknown_scope, :another_unknown_scope
|
|
27
|
-
state :new
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
class ImplementedAbstractClassDsl < AbstractClassDsl
|
|
32
|
-
end
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
class Thief < ActiveRecord::Base
|
|
2
|
-
if ActiveRecord::VERSION::MAJOR >= 3
|
|
3
|
-
self.table_name = 'thieves'
|
|
4
|
-
else
|
|
5
|
-
set_table_name "thieves"
|
|
6
|
-
end
|
|
7
|
-
include AASM
|
|
8
|
-
aasm do
|
|
9
|
-
state :rich
|
|
10
|
-
state :jailed
|
|
11
|
-
initial_state Proc.new {|thief| thief.skilled ? :rich : :jailed }
|
|
12
|
-
end
|
|
13
|
-
attr_accessor :skilled, :aasm_state
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
class MultipleThief < ActiveRecord::Base
|
|
17
|
-
if ActiveRecord::VERSION::MAJOR >= 3
|
|
18
|
-
self.table_name = 'multiple_thieves'
|
|
19
|
-
else
|
|
20
|
-
set_table_name "multiple_thieves"
|
|
21
|
-
end
|
|
22
|
-
include AASM
|
|
23
|
-
aasm :left, :column => :aasm_state do
|
|
24
|
-
state :rich
|
|
25
|
-
state :jailed
|
|
26
|
-
initial_state Proc.new {|thief| thief.skilled ? :rich : :jailed }
|
|
27
|
-
end
|
|
28
|
-
attr_accessor :skilled, :aasm_state
|
|
29
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
class TimestampExample < ActiveRecord::Base
|
|
2
|
-
include AASM
|
|
3
|
-
|
|
4
|
-
aasm column: :aasm_state, timestamps: true do
|
|
5
|
-
state :opened
|
|
6
|
-
state :closed
|
|
7
|
-
|
|
8
|
-
event :open do
|
|
9
|
-
transitions to: :opened
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
event :close do
|
|
13
|
-
transitions to: :closed
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
class Transactor < ActiveRecord::Base
|
|
2
|
-
|
|
3
|
-
belongs_to :worker
|
|
4
|
-
|
|
5
|
-
include AASM
|
|
6
|
-
aasm :column => :status do
|
|
7
|
-
state :sleeping, :initial => true
|
|
8
|
-
state :running, :before_enter => :start_worker, :after_enter => :fail
|
|
9
|
-
|
|
10
|
-
event :run do
|
|
11
|
-
transitions :to => :running, :from => :sleeping
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
private
|
|
16
|
-
|
|
17
|
-
def start_worker
|
|
18
|
-
worker.update_attribute(:status, 'running')
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def fail
|
|
22
|
-
raise StandardError.new('failed on purpose')
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
class NoLockTransactor < ActiveRecord::Base
|
|
28
|
-
|
|
29
|
-
belongs_to :worker
|
|
30
|
-
|
|
31
|
-
include AASM
|
|
32
|
-
|
|
33
|
-
aasm :column => :status do
|
|
34
|
-
state :sleeping, :initial => true
|
|
35
|
-
state :running
|
|
36
|
-
|
|
37
|
-
event :run do
|
|
38
|
-
transitions :to => :running, :from => :sleeping
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
class LockTransactor < ActiveRecord::Base
|
|
44
|
-
|
|
45
|
-
belongs_to :worker
|
|
46
|
-
|
|
47
|
-
include AASM
|
|
48
|
-
|
|
49
|
-
aasm :column => :status, requires_lock: true do
|
|
50
|
-
state :sleeping, :initial => true
|
|
51
|
-
state :running
|
|
52
|
-
|
|
53
|
-
event :run do
|
|
54
|
-
transitions :to => :running, :from => :sleeping
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
class LockNoWaitTransactor < ActiveRecord::Base
|
|
60
|
-
|
|
61
|
-
belongs_to :worker
|
|
62
|
-
|
|
63
|
-
include AASM
|
|
64
|
-
|
|
65
|
-
aasm :column => :status, requires_lock: 'FOR UPDATE NOWAIT' do
|
|
66
|
-
state :sleeping, :initial => true
|
|
67
|
-
state :running
|
|
68
|
-
|
|
69
|
-
event :run do
|
|
70
|
-
transitions :to => :running, :from => :sleeping
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
class NoTransactor < ActiveRecord::Base
|
|
76
|
-
|
|
77
|
-
belongs_to :worker
|
|
78
|
-
|
|
79
|
-
include AASM
|
|
80
|
-
aasm :column => :status, use_transactions: false do
|
|
81
|
-
state :sleeping, :initial => true
|
|
82
|
-
state :running, :before_enter => :start_worker, :after_enter => :fail
|
|
83
|
-
|
|
84
|
-
event :run do
|
|
85
|
-
transitions :to => :running, :from => :sleeping
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
private
|
|
90
|
-
|
|
91
|
-
def start_worker
|
|
92
|
-
worker.update_attribute(:status, 'running')
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
def fail
|
|
96
|
-
raise StandardError.new('failed on purpose')
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
class MultipleTransactor < ActiveRecord::Base
|
|
101
|
-
|
|
102
|
-
belongs_to :worker
|
|
103
|
-
|
|
104
|
-
include AASM
|
|
105
|
-
aasm :left, :column => :status do
|
|
106
|
-
state :sleeping, :initial => true
|
|
107
|
-
state :running, :before_enter => :start_worker, :after_enter => :fail
|
|
108
|
-
|
|
109
|
-
event :run do
|
|
110
|
-
transitions :to => :running, :from => :sleeping
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
private
|
|
115
|
-
|
|
116
|
-
def start_worker
|
|
117
|
-
worker.update_attribute(:status, 'running')
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
def fail
|
|
121
|
-
raise StandardError.new('failed on purpose')
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
end
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
class Validator < ActiveRecord::Base
|
|
2
|
-
attr_accessor :after_all_transactions_performed,
|
|
3
|
-
:after_transaction_performed_on_fail,
|
|
4
|
-
:after_transaction_performed_on_run,
|
|
5
|
-
:before_all_transactions_performed,
|
|
6
|
-
:before_transaction_performed_on_fail,
|
|
7
|
-
:before_transaction_performed_on_run,
|
|
8
|
-
: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
|
-
after_transaction do
|
|
26
|
-
@after_transaction_performed_on_run = true
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
before_transaction do
|
|
30
|
-
@before_transaction_performed_on_run = true
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
transitions :to => :running, :from => :sleeping
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
event :sleep do
|
|
37
|
-
after_commit do |name|
|
|
38
|
-
change_name_on_sleep name
|
|
39
|
-
end
|
|
40
|
-
transitions :to => :sleeping, :from => :running
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
event :fail do
|
|
44
|
-
after_transaction do
|
|
45
|
-
@after_transaction_performed_on_fail = true
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
before_transaction do
|
|
49
|
-
@before_transaction_performed_on_fail = true
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
transitions :to => :failed, :from => [:sleeping, :running]
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
validates_presence_of :name
|
|
57
|
-
|
|
58
|
-
def change_name!
|
|
59
|
-
self.name = "name changed"
|
|
60
|
-
save!
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def change_name_on_sleep name
|
|
64
|
-
self.name = name
|
|
65
|
-
save!
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def fail
|
|
69
|
-
raise StandardError.new('failed on purpose')
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def after_all_transactions
|
|
73
|
-
@after_all_transactions_performed = true
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def before_all_transactions
|
|
77
|
-
@before_all_transactions_performed = true
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
class MultipleValidator < ActiveRecord::Base
|
|
82
|
-
|
|
83
|
-
include AASM
|
|
84
|
-
aasm :left, :column => :status, :whiny_persistence => true do
|
|
85
|
-
state :sleeping, :initial => true
|
|
86
|
-
state :running
|
|
87
|
-
state :failed, :after_enter => :fail
|
|
88
|
-
|
|
89
|
-
event :run, :after_commit => :change_name! do
|
|
90
|
-
transitions :to => :running, :from => :sleeping
|
|
91
|
-
end
|
|
92
|
-
event :sleep do
|
|
93
|
-
after_commit do |name|
|
|
94
|
-
change_name_on_sleep name
|
|
95
|
-
end
|
|
96
|
-
transitions :to => :sleeping, :from => :running
|
|
97
|
-
end
|
|
98
|
-
event :fail do
|
|
99
|
-
transitions :to => :failed, :from => [:sleeping, :running]
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
validates_presence_of :name
|
|
104
|
-
|
|
105
|
-
def change_name!
|
|
106
|
-
self.name = "name changed"
|
|
107
|
-
save!
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
def change_name_on_sleep name
|
|
111
|
-
self.name = name
|
|
112
|
-
save!
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
def fail
|
|
116
|
-
raise StandardError.new('failed on purpose')
|
|
117
|
-
end
|
|
118
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
class WithEnum < ActiveRecord::Base
|
|
2
|
-
include AASM
|
|
3
|
-
|
|
4
|
-
# Fake this column for testing purposes
|
|
5
|
-
attr_accessor :aasm_state
|
|
6
|
-
|
|
7
|
-
def self.test
|
|
8
|
-
{}
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
aasm :enum => :test do
|
|
12
|
-
state :opened
|
|
13
|
-
state :closed
|
|
14
|
-
|
|
15
|
-
event :view do
|
|
16
|
-
transitions :to => :read, :from => [:needs_attention]
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
class MultipleWithEnum < ActiveRecord::Base
|
|
22
|
-
include AASM
|
|
23
|
-
|
|
24
|
-
# Fake this column for testing purposes
|
|
25
|
-
attr_accessor :aasm_state
|
|
26
|
-
|
|
27
|
-
def self.test
|
|
28
|
-
{}
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
aasm :left, :enum => :test do
|
|
32
|
-
state :opened
|
|
33
|
-
state :closed
|
|
34
|
-
|
|
35
|
-
event :view do
|
|
36
|
-
transitions :to => :read, :from => [:needs_attention]
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
class WithEnumWithoutColumn < ActiveRecord::Base
|
|
2
|
-
include AASM
|
|
3
|
-
|
|
4
|
-
if ActiveRecord::VERSION::MAJOR >= 4 && ActiveRecord::VERSION::MINOR >= 1 # won't work with Rails <= 4.1
|
|
5
|
-
enum status: {
|
|
6
|
-
opened: 0,
|
|
7
|
-
closed: 1
|
|
8
|
-
}
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
aasm :column => :status do
|
|
12
|
-
state :closed, initial: true
|
|
13
|
-
state :opened
|
|
14
|
-
|
|
15
|
-
event :view do
|
|
16
|
-
transitions :to => :opened, :from => :closed
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
class MultipleWithEnumWithoutColumn < ActiveRecord::Base
|
|
22
|
-
include AASM
|
|
23
|
-
if ActiveRecord::VERSION::MAJOR >= 4 && ActiveRecord::VERSION::MINOR >= 1 # won't work with Rails <= 4.1
|
|
24
|
-
enum status: {
|
|
25
|
-
opened: 0,
|
|
26
|
-
closed: 1
|
|
27
|
-
}
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
aasm :left, :column => :status do
|
|
31
|
-
state :closed, initial: true
|
|
32
|
-
state :opened
|
|
33
|
-
|
|
34
|
-
event :view do
|
|
35
|
-
transitions :to => :opened, :from => :closed
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
class WithFalseEnum < ActiveRecord::Base
|
|
2
|
-
include AASM
|
|
3
|
-
|
|
4
|
-
# Fake this column for testing purposes
|
|
5
|
-
attr_accessor :aasm_state
|
|
6
|
-
|
|
7
|
-
aasm :enum => false do
|
|
8
|
-
state :opened
|
|
9
|
-
state :closed
|
|
10
|
-
|
|
11
|
-
event :view do
|
|
12
|
-
transitions :to => :read, :from => [:needs_attention]
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
class MultipleWithFalseEnum < ActiveRecord::Base
|
|
18
|
-
include AASM
|
|
19
|
-
|
|
20
|
-
# Fake this column for testing purposes
|
|
21
|
-
attr_accessor :aasm_state
|
|
22
|
-
|
|
23
|
-
aasm :left, :enum => false do
|
|
24
|
-
state :opened
|
|
25
|
-
state :closed
|
|
26
|
-
|
|
27
|
-
event :view do
|
|
28
|
-
transitions :to => :read, :from => [:needs_attention]
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
class WithTrueEnum < ActiveRecord::Base
|
|
2
|
-
include AASM
|
|
3
|
-
|
|
4
|
-
# Fake this column for testing purposes
|
|
5
|
-
attr_accessor :aasm_state
|
|
6
|
-
|
|
7
|
-
def value
|
|
8
|
-
'value'
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
aasm :enum => true do
|
|
12
|
-
state :opened
|
|
13
|
-
state :closed
|
|
14
|
-
|
|
15
|
-
event :view do
|
|
16
|
-
transitions :to => :read, :from => [:needs_attention]
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
class MultipleWithTrueEnum < ActiveRecord::Base
|
|
22
|
-
include AASM
|
|
23
|
-
|
|
24
|
-
# Fake this column for testing purposes
|
|
25
|
-
attr_accessor :aasm_state
|
|
26
|
-
|
|
27
|
-
def value
|
|
28
|
-
'value'
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
aasm :left, :enum => true do
|
|
32
|
-
state :opened
|
|
33
|
-
state :closed
|
|
34
|
-
|
|
35
|
-
event :view do
|
|
36
|
-
transitions :to => :read, :from => [:needs_attention]
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
class BasicTwoStateMachinesExample
|
|
2
|
-
include AASM
|
|
3
|
-
|
|
4
|
-
aasm :search do
|
|
5
|
-
state :initialised, :initial => true
|
|
6
|
-
state :queried
|
|
7
|
-
state :requested
|
|
8
|
-
|
|
9
|
-
event :query do
|
|
10
|
-
transitions :from => [:initialised, :requested], :to => :queried
|
|
11
|
-
end
|
|
12
|
-
event :request do
|
|
13
|
-
transitions :from => :queried, :to => :requested
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
aasm :sync do
|
|
18
|
-
state :unsynced, :initial => true
|
|
19
|
-
state :synced
|
|
20
|
-
|
|
21
|
-
event :sync do
|
|
22
|
-
transitions :from => :unsynced, :to => :synced
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|