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
data/Gemfile.lock_old
DELETED
@@ -1,151 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
aasm (4.11.1)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
actionmailer (4.2.7.1)
|
10
|
-
actionpack (= 4.2.7.1)
|
11
|
-
actionview (= 4.2.7.1)
|
12
|
-
activejob (= 4.2.7.1)
|
13
|
-
mail (~> 2.5, >= 2.5.4)
|
14
|
-
rails-dom-testing (~> 1.0, >= 1.0.5)
|
15
|
-
actionpack (4.2.7.1)
|
16
|
-
actionview (= 4.2.7.1)
|
17
|
-
activesupport (= 4.2.7.1)
|
18
|
-
rack (~> 1.6)
|
19
|
-
rack-test (~> 0.6.2)
|
20
|
-
rails-dom-testing (~> 1.0, >= 1.0.5)
|
21
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
22
|
-
actionview (4.2.7.1)
|
23
|
-
activesupport (= 4.2.7.1)
|
24
|
-
builder (~> 3.1)
|
25
|
-
erubis (~> 2.7.0)
|
26
|
-
rails-dom-testing (~> 1.0, >= 1.0.5)
|
27
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
28
|
-
activejob (4.2.7.1)
|
29
|
-
activesupport (= 4.2.7.1)
|
30
|
-
globalid (>= 0.3.0)
|
31
|
-
activemodel (4.2.7.1)
|
32
|
-
activesupport (= 4.2.7.1)
|
33
|
-
builder (~> 3.1)
|
34
|
-
activerecord (4.2.7.1)
|
35
|
-
activemodel (= 4.2.7.1)
|
36
|
-
activesupport (= 4.2.7.1)
|
37
|
-
arel (~> 6.0)
|
38
|
-
activesupport (4.2.7.1)
|
39
|
-
i18n (~> 0.7)
|
40
|
-
json (~> 1.7, >= 1.7.7)
|
41
|
-
minitest (~> 5.1)
|
42
|
-
thread_safe (~> 0.3, >= 0.3.4)
|
43
|
-
tzinfo (~> 1.1)
|
44
|
-
appraisal (2.1.0)
|
45
|
-
bundler
|
46
|
-
rake
|
47
|
-
thor (>= 0.14.0)
|
48
|
-
arel (6.0.4)
|
49
|
-
builder (3.2.3)
|
50
|
-
coderay (1.1.1)
|
51
|
-
concurrent-ruby (1.0.5)
|
52
|
-
diff-lcs (1.3)
|
53
|
-
erubis (2.7.0)
|
54
|
-
generator_spec (0.9.3)
|
55
|
-
activesupport (>= 3.0.0)
|
56
|
-
railties (>= 3.0.0)
|
57
|
-
globalid (0.3.7)
|
58
|
-
activesupport (>= 4.1.0)
|
59
|
-
i18n (0.8.1)
|
60
|
-
json (1.8.6)
|
61
|
-
loofah (2.0.3)
|
62
|
-
nokogiri (>= 1.5.9)
|
63
|
-
mail (2.6.4)
|
64
|
-
mime-types (>= 1.16, < 4)
|
65
|
-
method_source (0.8.2)
|
66
|
-
mime-types (3.1)
|
67
|
-
mime-types-data (~> 3.2015)
|
68
|
-
mime-types-data (3.2016.0521)
|
69
|
-
mini_portile2 (2.1.0)
|
70
|
-
minitest (5.10.1)
|
71
|
-
nokogiri (1.7.0.1)
|
72
|
-
mini_portile2 (~> 2.1.0)
|
73
|
-
pry (0.10.4)
|
74
|
-
coderay (~> 1.1.0)
|
75
|
-
method_source (~> 0.8.1)
|
76
|
-
slop (~> 3.4)
|
77
|
-
rack (1.6.5)
|
78
|
-
rack-test (0.6.3)
|
79
|
-
rack (>= 1.0)
|
80
|
-
rails (4.2.7.1)
|
81
|
-
actionmailer (= 4.2.7.1)
|
82
|
-
actionpack (= 4.2.7.1)
|
83
|
-
actionview (= 4.2.7.1)
|
84
|
-
activejob (= 4.2.7.1)
|
85
|
-
activemodel (= 4.2.7.1)
|
86
|
-
activerecord (= 4.2.7.1)
|
87
|
-
activesupport (= 4.2.7.1)
|
88
|
-
bundler (>= 1.3.0, < 2.0)
|
89
|
-
railties (= 4.2.7.1)
|
90
|
-
sprockets-rails
|
91
|
-
rails-deprecated_sanitizer (1.0.3)
|
92
|
-
activesupport (>= 4.2.0.alpha)
|
93
|
-
rails-dom-testing (1.0.8)
|
94
|
-
activesupport (>= 4.2.0.beta, < 5.0)
|
95
|
-
nokogiri (~> 1.6)
|
96
|
-
rails-deprecated_sanitizer (>= 1.0.1)
|
97
|
-
rails-html-sanitizer (1.0.3)
|
98
|
-
loofah (~> 2.0)
|
99
|
-
railties (4.2.7.1)
|
100
|
-
actionpack (= 4.2.7.1)
|
101
|
-
activesupport (= 4.2.7.1)
|
102
|
-
rake (>= 0.8.7)
|
103
|
-
thor (>= 0.18.1, < 2.0)
|
104
|
-
rake (12.0.0)
|
105
|
-
rdoc (4.3.0)
|
106
|
-
rspec (3.5.0)
|
107
|
-
rspec-core (~> 3.5.0)
|
108
|
-
rspec-expectations (~> 3.5.0)
|
109
|
-
rspec-mocks (~> 3.5.0)
|
110
|
-
rspec-core (3.5.4)
|
111
|
-
rspec-support (~> 3.5.0)
|
112
|
-
rspec-expectations (3.5.0)
|
113
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
114
|
-
rspec-support (~> 3.5.0)
|
115
|
-
rspec-mocks (3.5.0)
|
116
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
117
|
-
rspec-support (~> 3.5.0)
|
118
|
-
rspec-support (3.5.0)
|
119
|
-
sdoc (0.4.2)
|
120
|
-
json (~> 1.7, >= 1.7.7)
|
121
|
-
rdoc (~> 4.0)
|
122
|
-
slop (3.6.0)
|
123
|
-
sprockets (3.7.1)
|
124
|
-
concurrent-ruby (~> 1.0)
|
125
|
-
rack (> 1, < 3)
|
126
|
-
sprockets-rails (3.2.0)
|
127
|
-
actionpack (>= 4.0)
|
128
|
-
activesupport (>= 4.0)
|
129
|
-
sprockets (>= 3.0.0)
|
130
|
-
sqlite3 (1.3.13)
|
131
|
-
thor (0.19.4)
|
132
|
-
thread_safe (0.3.6)
|
133
|
-
tzinfo (1.2.2)
|
134
|
-
thread_safe (~> 0.1)
|
135
|
-
|
136
|
-
PLATFORMS
|
137
|
-
ruby
|
138
|
-
|
139
|
-
DEPENDENCIES
|
140
|
-
aasm!
|
141
|
-
appraisal
|
142
|
-
generator_spec
|
143
|
-
pry
|
144
|
-
rails (= 4.2.7.1)
|
145
|
-
rake
|
146
|
-
rspec (>= 3)
|
147
|
-
sdoc
|
148
|
-
sqlite3
|
149
|
-
|
150
|
-
BUNDLED WITH
|
151
|
-
1.12.4
|
data/HOWTO
DELETED
data/PLANNED_CHANGES.md
DELETED
@@ -1,240 +0,0 @@
|
|
1
|
-
# Migrating from _AASM_ version 3 to 4
|
2
|
-
|
3
|
-
## Must
|
4
|
-
|
5
|
-
### Callback order has been changed
|
6
|
-
|
7
|
-
The first callback to be run is `:before` of the event. A state's `:before_exit` callback
|
8
|
-
is now run directly before its `:exit` callback. Event-based guards are now run before
|
9
|
-
any of the transition guards are run. And finally, before running any state callbacks,
|
10
|
-
all (event- and transition-based) guards are run to check whether the state callbacks
|
11
|
-
can be run or not.
|
12
|
-
|
13
|
-
|
14
|
-
### Callback `:on_transition` renamed to `:after` and changed its binding
|
15
|
-
|
16
|
-
The transition callback `:on_transition` has been renamed to `:after` in order
|
17
|
-
to make clear it is being called (namely _after_ doing the transition).
|
18
|
-
|
19
|
-
Furthermore, in alignment with the other callbacks, it's not receiving the object
|
20
|
-
at hand as first parameter and binds the current object to self.
|
21
|
-
|
22
|
-
In summary, change from
|
23
|
-
|
24
|
-
```ruby
|
25
|
-
aasm do
|
26
|
-
...
|
27
|
-
transitions :from => :from_state, :to => :to_state, :on_transition => :do_something
|
28
|
-
...
|
29
|
-
end
|
30
|
-
|
31
|
-
...
|
32
|
-
def some_other_method(arg)
|
33
|
-
...
|
34
|
-
end
|
35
|
-
|
36
|
-
def do_something(obj, arg1, arg2)
|
37
|
-
obj.some_other_method(arg1)
|
38
|
-
end
|
39
|
-
```
|
40
|
-
|
41
|
-
to
|
42
|
-
|
43
|
-
```ruby
|
44
|
-
aasm do
|
45
|
-
...
|
46
|
-
transitions :from => :from_state, :to => :to_state, :after => :do_something
|
47
|
-
...
|
48
|
-
end
|
49
|
-
|
50
|
-
...
|
51
|
-
def some_other_method(arg)
|
52
|
-
...
|
53
|
-
end
|
54
|
-
|
55
|
-
def do_something(arg1, arg2)
|
56
|
-
some_other_method(arg1) # run on the object as self
|
57
|
-
end
|
58
|
-
```
|
59
|
-
|
60
|
-
|
61
|
-
### `after_commit` hooks are now event-based
|
62
|
-
|
63
|
-
The `after_commit` hooks have been move from the state level to the event level.
|
64
|
-
So, if you want some code block to be executed after the _AASM_ state has been
|
65
|
-
saved **AND** committed, change this code
|
66
|
-
|
67
|
-
```ruby
|
68
|
-
class Job < ActiveRecord::Base
|
69
|
-
include AASM
|
70
|
-
|
71
|
-
aasm do
|
72
|
-
state :sleeping, :initial => true
|
73
|
-
state :running, :after_commit => :notify_about_running_job
|
74
|
-
|
75
|
-
event :run do
|
76
|
-
transitions :from => :sleeping, :to => :running
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def notify_about_running_job
|
81
|
-
...
|
82
|
-
end
|
83
|
-
end
|
84
|
-
```
|
85
|
-
|
86
|
-
to
|
87
|
-
|
88
|
-
```ruby
|
89
|
-
class Job < ActiveRecord::Base
|
90
|
-
include AASM
|
91
|
-
|
92
|
-
aasm do
|
93
|
-
state :sleeping, :initial => true
|
94
|
-
state :running
|
95
|
-
|
96
|
-
event :run, :after_commit => :notify_about_running_job do
|
97
|
-
transitions :from => :sleeping, :to => :running
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
def notify_about_running_job
|
102
|
-
...
|
103
|
-
end
|
104
|
-
end
|
105
|
-
```
|
106
|
-
|
107
|
-
|
108
|
-
### Instance-level inspection
|
109
|
-
|
110
|
-
Listing events for the current state now returns Event objects instead of event names (as symbols). So, change from
|
111
|
-
|
112
|
-
```ruby
|
113
|
-
job = Job.new
|
114
|
-
|
115
|
-
job.aasm.events
|
116
|
-
# => [:run]
|
117
|
-
```
|
118
|
-
|
119
|
-
to
|
120
|
-
|
121
|
-
```ruby
|
122
|
-
job = Job.new
|
123
|
-
|
124
|
-
job.aasm.events.map(&:name)
|
125
|
-
# => [:run]
|
126
|
-
```
|
127
|
-
|
128
|
-
Retrieving the list of permitted events has now been integrated into the `events` method. Change from
|
129
|
-
|
130
|
-
```ruby
|
131
|
-
job = Job.new
|
132
|
-
|
133
|
-
job.aasm.permissible_events
|
134
|
-
# => [:run]
|
135
|
-
```
|
136
|
-
|
137
|
-
to
|
138
|
-
|
139
|
-
```ruby
|
140
|
-
job = Job.new
|
141
|
-
|
142
|
-
job.aasm.events(:permitted => true).map(&:name)
|
143
|
-
# => [:run]
|
144
|
-
```
|
145
|
-
|
146
|
-
Class-based events now return a list of `Event` instances. Change from
|
147
|
-
|
148
|
-
```ruby
|
149
|
-
Job.aasm.events.values.map(&:name)
|
150
|
-
# => [:run]
|
151
|
-
```
|
152
|
-
|
153
|
-
to
|
154
|
-
|
155
|
-
```ruby
|
156
|
-
Job.aasm.events.map(&:name)
|
157
|
-
# => [:run]
|
158
|
-
```
|
159
|
-
|
160
|
-
|
161
|
-
## Could
|
162
|
-
|
163
|
-
### Triggering an event without _to_state_
|
164
|
-
|
165
|
-
When providing parameters to callbacks it is not required to provide the `to_state`
|
166
|
-
anymore. So, assuming you have the following class:
|
167
|
-
|
168
|
-
```ruby
|
169
|
-
class Job
|
170
|
-
include AASM
|
171
|
-
|
172
|
-
aasm do
|
173
|
-
state :sleeping, :initial => true
|
174
|
-
state :running
|
175
|
-
|
176
|
-
event :run do
|
177
|
-
transitions :from => :sleeping, :to => :running, :after => :log
|
178
|
-
end
|
179
|
-
end
|
180
|
-
|
181
|
-
def log(message)
|
182
|
-
logger.info message
|
183
|
-
end
|
184
|
-
end
|
185
|
-
```
|
186
|
-
|
187
|
-
then you could change from
|
188
|
-
|
189
|
-
```ruby
|
190
|
-
job = Job.new
|
191
|
-
job.run(:running, "we want to run")
|
192
|
-
```
|
193
|
-
|
194
|
-
to this:
|
195
|
-
|
196
|
-
```ruby
|
197
|
-
job = Job.new
|
198
|
-
job.run("we want to run")
|
199
|
-
|
200
|
-
job.run(:running, "we want to run") # still supported to select the target state (the _to_state_)
|
201
|
-
```
|
202
|
-
|
203
|
-
On the other hand, you have to accept the arguments for **all** callback methods (and procs)
|
204
|
-
you provide and use. If you don't want to provide these, you can splat them
|
205
|
-
|
206
|
-
```ruby
|
207
|
-
def before(*args); end
|
208
|
-
# or
|
209
|
-
def before(*_); end # to indicate that you don't want to use the arguments
|
210
|
-
```
|
211
|
-
|
212
|
-
### New configuration option: `no_direct_assignment`
|
213
|
-
|
214
|
-
If you want to make sure that the _AASM_ column for storing the state is not directly assigned,
|
215
|
-
configure _AASM_ to not allow direct assignment, like this:
|
216
|
-
|
217
|
-
```ruby
|
218
|
-
class Job < ActiveRecord::Base
|
219
|
-
include AASM
|
220
|
-
|
221
|
-
aasm :no_direct_assignment => true do
|
222
|
-
state :sleeping, :initial => true
|
223
|
-
state :running
|
224
|
-
|
225
|
-
event :run do
|
226
|
-
transitions :from => :sleeping, :to => :running
|
227
|
-
end
|
228
|
-
end
|
229
|
-
|
230
|
-
end
|
231
|
-
```
|
232
|
-
|
233
|
-
resulting in this:
|
234
|
-
|
235
|
-
```ruby
|
236
|
-
job = Job.create
|
237
|
-
job.aasm_state # => 'sleeping'
|
238
|
-
job.aasm_state = :running # => raises AASM::NoDirectAssignmentError
|
239
|
-
job.aasm_state # => 'sleeping'
|
240
|
-
```
|
data/Rakefile
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'bundler/gem_tasks'
|
2
|
-
|
3
|
-
require 'rspec/core'
|
4
|
-
require 'rspec/core/rake_task'
|
5
|
-
RSpec::Core::RakeTask.new(:spec) do |spec|
|
6
|
-
spec.pattern = FileList['spec/**/*_spec.rb']
|
7
|
-
end
|
8
|
-
|
9
|
-
require 'rake/testtask'
|
10
|
-
Rake::TestTask.new(:test) do |test|
|
11
|
-
test.libs << 'lib' << 'test'
|
12
|
-
test.pattern = 'test/**/*_test.rb'
|
13
|
-
test.verbose = true
|
14
|
-
end
|
15
|
-
|
16
|
-
require 'rdoc/task'
|
17
|
-
require 'aasm/version'
|
18
|
-
|
19
|
-
Rake::RDocTask.new do |rdoc|
|
20
|
-
rdoc.rdoc_dir = 'rdoc'
|
21
|
-
rdoc.title = "aasm #{AASM::VERSION}"
|
22
|
-
rdoc.rdoc_files.include('README*')
|
23
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
24
|
-
end
|
25
|
-
|
26
|
-
if ENV["APPRAISAL_INITIALIZED"] || ENV["TRAVIS"]
|
27
|
-
task :default => :spec
|
28
|
-
else
|
29
|
-
require 'appraisal'
|
30
|
-
task :default => :appraisal
|
31
|
-
end
|
data/TESTING.md
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
## Install dependency matrix
|
2
|
-
|
3
|
-
appraisal install
|
4
|
-
|
5
|
-
This will re-generate Gemfiles in `gemfile` folder
|
6
|
-
|
7
|
-
Use rvm gemsets or similar to avoid global gem pollution
|
8
|
-
|
9
|
-
## Run specs
|
10
|
-
|
11
|
-
For all supported Rails/ORM combinations:
|
12
|
-
|
13
|
-
appraisal rspec
|
14
|
-
|
15
|
-
Or for specific one:
|
16
|
-
|
17
|
-
appraisal rails_4.2 rspec
|
18
|
-
|
19
|
-
Or for one particular test file
|
20
|
-
|
21
|
-
appraisal rails_4.2_mongoid_5 rspec spec/unit/persistence/mongoid_persistence_multiple_spec.rb
|
22
|
-
|
23
|
-
Or down to one test case
|
24
|
-
|
25
|
-
appraisal rails_4.2_mongoid_5 rspec spec/unit/persistence/mongoid_persistence_multiple_spec.rb:92
|
data/aasm.gemspec
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "aasm/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |s|
|
6
|
-
s.name = "aasm"
|
7
|
-
s.version = AASM::VERSION
|
8
|
-
s.authors = ["Thorsten Boettger", "Anil Maurya"]
|
9
|
-
s.email = %q{aasm@mt7.de, anilmaurya8dec@gmail.com}
|
10
|
-
s.homepage = %q{https://github.com/aasm/aasm}
|
11
|
-
s.summary = %q{State machine mixin for Ruby objects}
|
12
|
-
s.description = %q{AASM is a continuation of the acts-as-state-machine rails plugin, built for plain Ruby objects.}
|
13
|
-
s.date = Time.now
|
14
|
-
s.licenses = ["MIT"]
|
15
|
-
|
16
|
-
s.platform = Gem::Platform::RUBY
|
17
|
-
s.required_ruby_version = '>= 1.9.3'
|
18
|
-
|
19
|
-
s.add_dependency 'concurrent-ruby', '~> 1.0'
|
20
|
-
|
21
|
-
s.add_development_dependency 'rake'
|
22
|
-
s.add_development_dependency 'sdoc'
|
23
|
-
s.add_development_dependency 'rspec', ">= 3"
|
24
|
-
s.add_development_dependency 'generator_spec'
|
25
|
-
s.add_development_dependency 'appraisal'
|
26
|
-
|
27
|
-
# debugging
|
28
|
-
# s.add_development_dependency 'debugger'
|
29
|
-
s.add_development_dependency 'pry'
|
30
|
-
|
31
|
-
s.files = `git ls-files`.split("\n")
|
32
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
33
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
34
|
-
s.require_paths = ["lib"]
|
35
|
-
end
|
data/callbacks.txt
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
callbacks
|
2
|
-
|
3
|
-
AASM 3
|
4
|
-
|
5
|
-
begin
|
6
|
-
old_state exit # old? should be deprecated -> use old_state.before_exit instead
|
7
|
-
event before
|
8
|
-
old_state before_exit
|
9
|
-
new_state before_enter
|
10
|
-
new_state enter # old? should be deprecated -> use new_state.before_enter instead
|
11
|
-
...update state...
|
12
|
-
transition guard
|
13
|
-
event guard
|
14
|
-
transition on_transition
|
15
|
-
event success # if persist successful
|
16
|
-
old_state after_exit
|
17
|
-
new_state after_enter
|
18
|
-
event after
|
19
|
-
rescue
|
20
|
-
event error
|
21
|
-
end
|
22
|
-
|
23
|
-
AASM 4
|
24
|
-
|
25
|
-
todo
|
26
|
-
|
27
|
-
done
|
28
|
-
- move event.before before everything else
|
29
|
-
- move old_state.before_exit before old_state.exit
|
30
|
-
- move event.guard before transition.guard
|
31
|
-
- fire guards before running state callbacks (test run)
|
32
|
-
|
33
|
-
begin
|
34
|
-
event before
|
35
|
-
event guard # test run
|
36
|
-
transition guard # test run
|
37
|
-
old_state before_exit
|
38
|
-
old_state exit
|
39
|
-
new_state before_enter
|
40
|
-
new_state enter
|
41
|
-
event guard
|
42
|
-
transition guard
|
43
|
-
transition on_transition
|
44
|
-
...update state...
|
45
|
-
event success # if persist successful
|
46
|
-
old_state after_exit
|
47
|
-
new_state after_enter
|
48
|
-
event after
|
49
|
-
rescue
|
50
|
-
event error
|
51
|
-
end
|
data/docker-compose.yml
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
version: "2"
|
2
|
-
|
3
|
-
services:
|
4
|
-
aasm:
|
5
|
-
image: aasm/aasm
|
6
|
-
build: .
|
7
|
-
command: bash -c 'bundle exec appraisal install && bundle exec appraisal rspec'
|
8
|
-
environment:
|
9
|
-
- DYNAMODB_HOST=dynamodb
|
10
|
-
- DYNAMODB_PORT=8000
|
11
|
-
- MONGODB_HOST=mongo
|
12
|
-
- MONGODB_PORT=27017
|
13
|
-
- RAILS_ENV=development
|
14
|
-
- REDIS_HOST=redis
|
15
|
-
- REDIS_PORT=6379
|
16
|
-
- RETHINKDB_DB=rethinkdb_test
|
17
|
-
- RETHINKDB_HOST=rethinkdb
|
18
|
-
- RETHINKDB_PORT=28015
|
19
|
-
depends_on:
|
20
|
-
- dynamodb
|
21
|
-
- mongo
|
22
|
-
- redis
|
23
|
-
- rethinkdb
|
24
|
-
volumes:
|
25
|
-
- .:/application
|
26
|
-
volumes_from:
|
27
|
-
- bundle
|
28
|
-
bundle:
|
29
|
-
image: aasm/aasm
|
30
|
-
command: echo Bundler data container
|
31
|
-
volumes:
|
32
|
-
- /bundle
|
33
|
-
dynamodb:
|
34
|
-
image: cnadiminti/dynamodb-local:2017-02-16
|
35
|
-
mongo:
|
36
|
-
image: mongo:3.6.1
|
37
|
-
redis:
|
38
|
-
image: redis:4.0.6-alpine
|
39
|
-
rethinkdb:
|
40
|
-
image: rethinkdb:2.3.6
|
data/gemfiles/rails_3.2.gemfile
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "sqlite3", platforms: :ruby
|
6
|
-
gem "rails", "~> 3.2.22"
|
7
|
-
gem "mongoid", "~> 3.1"
|
8
|
-
gem "sequel"
|
9
|
-
gem "bson_ext", platforms: :ruby
|
10
|
-
gem "test-unit", "~> 3.0"
|
11
|
-
gem "activerecord-jdbcsqlite3-adapter", "1.3.24", platforms: :jruby
|
12
|
-
|
13
|
-
gemspec path: "../"
|
data/gemfiles/rails_4.0.gemfile
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "sqlite3", platforms: :ruby
|
6
|
-
gem "rails", "4.0.13"
|
7
|
-
gem "mime-types", "~> 2", platforms: [:ruby_19, :jruby]
|
8
|
-
gem "mongoid", "~> 4.0"
|
9
|
-
gem "sequel"
|
10
|
-
gem "dynamoid", "~> 1", platforms: :ruby
|
11
|
-
gem "aws-sdk", "~> 2", platforms: :ruby
|
12
|
-
gem "redis-objects"
|
13
|
-
gem "activerecord-jdbcsqlite3-adapter", "1.3.24", platforms: :jruby
|
14
|
-
|
15
|
-
gemspec path: "../"
|
data/gemfiles/rails_4.2.gemfile
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "sqlite3", platforms: :ruby
|
6
|
-
gem "rails", "4.2.5"
|
7
|
-
gem "nokogiri", "1.6.8.1", platforms: [:ruby_19]
|
8
|
-
gem "mime-types", "~> 2", platforms: [:ruby_19, :jruby]
|
9
|
-
gem "mongoid", "~> 4.0"
|
10
|
-
gem "sequel"
|
11
|
-
gem "dynamoid", "~> 1", platforms: :ruby
|
12
|
-
gem "aws-sdk", "~> 2", platforms: :ruby
|
13
|
-
gem "redis-objects"
|
14
|
-
gem "activerecord-jdbcsqlite3-adapter", "1.3.24", platforms: :jruby
|
15
|
-
|
16
|
-
gemspec path: "../"
|
@@ -1,11 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "sqlite3", platforms: :ruby
|
6
|
-
gem "rails", "4.2.5"
|
7
|
-
gem "mime-types", "~> 2", platforms: [:ruby_19, :jruby]
|
8
|
-
gem "mongoid", "~> 5.0"
|
9
|
-
gem "activerecord-jdbcsqlite3-adapter", "1.3.24", platforms: :jruby
|
10
|
-
|
11
|
-
gemspec path: "../"
|
data/gemfiles/rails_5.0.gemfile
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "sqlite3", platforms: :ruby
|
6
|
-
gem "rails", "5.0.0"
|
7
|
-
gem "mongoid", "~> 6.0"
|
8
|
-
gem "sequel"
|
9
|
-
gem "dynamoid", "~> 1", platforms: :ruby
|
10
|
-
gem "aws-sdk", "~> 2", platforms: :ruby
|
11
|
-
gem "redis-objects"
|
12
|
-
|
13
|
-
gemspec path: "../"
|