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.
Files changed (231) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +243 -118
  3. data/lib/aasm/aasm.rb +29 -27
  4. data/lib/aasm/base.rb +61 -11
  5. data/lib/aasm/configuration.rb +3 -0
  6. data/lib/aasm/core/event.rb +21 -9
  7. data/lib/aasm/core/invokers/class_invoker.rb +1 -1
  8. data/lib/aasm/core/invokers/literal_invoker.rb +3 -1
  9. data/lib/aasm/core/state.rb +6 -5
  10. data/lib/aasm/core/transition.rb +1 -1
  11. data/lib/aasm/dsl_helper.rb +24 -22
  12. data/lib/aasm/errors.rb +3 -1
  13. data/lib/aasm/instance_base.rb +28 -5
  14. data/lib/aasm/localizer.rb +13 -3
  15. data/lib/aasm/persistence/active_record_persistence.rb +25 -5
  16. data/lib/aasm/persistence/base.rb +14 -3
  17. data/lib/aasm/persistence/core_data_query_persistence.rb +2 -1
  18. data/lib/aasm/persistence/dynamoid_persistence.rb +1 -1
  19. data/lib/aasm/persistence/mongoid_persistence.rb +1 -1
  20. data/lib/aasm/persistence/no_brainer_persistence.rb +1 -1
  21. data/lib/aasm/persistence/orm.rb +23 -19
  22. data/lib/aasm/persistence/redis_persistence.rb +1 -1
  23. data/lib/aasm/rspec/transition_from.rb +5 -1
  24. data/lib/aasm/version.rb +1 -1
  25. data/lib/aasm.rb +0 -2
  26. data/lib/generators/aasm/orm_helpers.rb +7 -1
  27. data/lib/generators/active_record/aasm_generator.rb +3 -1
  28. data/lib/generators/active_record/templates/migration.rb +1 -1
  29. metadata +35 -385
  30. data/.document +0 -6
  31. data/.gitignore +0 -20
  32. data/.travis.yml +0 -54
  33. data/API +0 -34
  34. data/Appraisals +0 -66
  35. data/CHANGELOG.md +0 -377
  36. data/CODE_OF_CONDUCT.md +0 -13
  37. data/CONTRIBUTING.md +0 -24
  38. data/Dockerfile +0 -44
  39. data/Gemfile +0 -6
  40. data/Gemfile.lock_old +0 -151
  41. data/HOWTO +0 -12
  42. data/PLANNED_CHANGES.md +0 -11
  43. data/README_FROM_VERSION_3_TO_4.md +0 -240
  44. data/Rakefile +0 -31
  45. data/TESTING.md +0 -25
  46. data/aasm.gemspec +0 -35
  47. data/callbacks.txt +0 -51
  48. data/docker-compose.yml +0 -40
  49. data/gemfiles/rails_3.2.gemfile +0 -13
  50. data/gemfiles/rails_4.0.gemfile +0 -15
  51. data/gemfiles/rails_4.2.gemfile +0 -16
  52. data/gemfiles/rails_4.2_mongoid_5.gemfile +0 -11
  53. data/gemfiles/rails_4.2_nobrainer.gemfile +0 -9
  54. data/gemfiles/rails_5.0.gemfile +0 -13
  55. data/gemfiles/rails_5.0_nobrainer.gemfile +0 -9
  56. data/gemfiles/rails_5.1.gemfile +0 -13
  57. data/spec/database.rb +0 -44
  58. data/spec/database.yml +0 -3
  59. data/spec/en.yml +0 -12
  60. data/spec/en_deprecated_style.yml +0 -10
  61. data/spec/generators/active_record_generator_spec.rb +0 -47
  62. data/spec/generators/mongoid_generator_spec.rb +0 -31
  63. data/spec/generators/no_brainer_generator_spec.rb +0 -29
  64. data/spec/models/active_record/basic_active_record_two_state_machines_example.rb +0 -25
  65. data/spec/models/active_record/complex_active_record_example.rb +0 -37
  66. data/spec/models/active_record/derivate_new_dsl.rb +0 -7
  67. data/spec/models/active_record/false_state.rb +0 -35
  68. data/spec/models/active_record/gate.rb +0 -39
  69. data/spec/models/active_record/invalid_persistor.rb +0 -29
  70. data/spec/models/active_record/localizer_test_model.rb +0 -34
  71. data/spec/models/active_record/no_direct_assignment.rb +0 -21
  72. data/spec/models/active_record/no_scope.rb +0 -21
  73. data/spec/models/active_record/persisted_state.rb +0 -12
  74. data/spec/models/active_record/provided_and_persisted_state.rb +0 -24
  75. data/spec/models/active_record/reader.rb +0 -7
  76. data/spec/models/active_record/readme_job.rb +0 -21
  77. data/spec/models/active_record/silent_persistor.rb +0 -29
  78. data/spec/models/active_record/simple_new_dsl.rb +0 -17
  79. data/spec/models/active_record/thief.rb +0 -29
  80. data/spec/models/active_record/transactor.rb +0 -124
  81. data/spec/models/active_record/transient.rb +0 -6
  82. data/spec/models/active_record/validator.rb +0 -118
  83. data/spec/models/active_record/with_enum.rb +0 -39
  84. data/spec/models/active_record/with_enum_without_column.rb +0 -38
  85. data/spec/models/active_record/with_false_enum.rb +0 -31
  86. data/spec/models/active_record/with_true_enum.rb +0 -39
  87. data/spec/models/active_record/worker.rb +0 -2
  88. data/spec/models/active_record/writer.rb +0 -6
  89. data/spec/models/basic_two_state_machines_example.rb +0 -25
  90. data/spec/models/callbacks/basic.rb +0 -98
  91. data/spec/models/callbacks/basic_multiple.rb +0 -75
  92. data/spec/models/callbacks/guard_within_block.rb +0 -67
  93. data/spec/models/callbacks/guard_within_block_multiple.rb +0 -66
  94. data/spec/models/callbacks/multiple_transitions_transition_guard.rb +0 -66
  95. data/spec/models/callbacks/multiple_transitions_transition_guard_multiple.rb +0 -65
  96. data/spec/models/callbacks/private_method.rb +0 -44
  97. data/spec/models/callbacks/private_method_multiple.rb +0 -44
  98. data/spec/models/callbacks/with_args.rb +0 -62
  99. data/spec/models/callbacks/with_args_multiple.rb +0 -61
  100. data/spec/models/callbacks/with_state_arg.rb +0 -30
  101. data/spec/models/callbacks/with_state_arg_multiple.rb +0 -26
  102. data/spec/models/complex_example.rb +0 -222
  103. data/spec/models/conversation.rb +0 -93
  104. data/spec/models/default_state.rb +0 -12
  105. data/spec/models/double_definer.rb +0 -21
  106. data/spec/models/dynamoid/complex_dynamoid_example.rb +0 -37
  107. data/spec/models/dynamoid/dynamoid_multiple.rb +0 -18
  108. data/spec/models/dynamoid/dynamoid_simple.rb +0 -18
  109. data/spec/models/foo.rb +0 -106
  110. data/spec/models/foo_callback_multiple.rb +0 -45
  111. data/spec/models/guard_arguments_check.rb +0 -17
  112. data/spec/models/guard_with_params.rb +0 -24
  113. data/spec/models/guard_with_params_multiple.rb +0 -18
  114. data/spec/models/guardian.rb +0 -58
  115. data/spec/models/guardian_multiple.rb +0 -48
  116. data/spec/models/guardian_without_from_specified.rb +0 -18
  117. data/spec/models/initial_state_proc.rb +0 -31
  118. data/spec/models/mongoid/complex_mongoid_example.rb +0 -37
  119. data/spec/models/mongoid/invalid_persistor_mongoid.rb +0 -39
  120. data/spec/models/mongoid/mongoid_relationships.rb +0 -26
  121. data/spec/models/mongoid/no_scope_mongoid.rb +0 -21
  122. data/spec/models/mongoid/silent_persistor_mongoid.rb +0 -39
  123. data/spec/models/mongoid/simple_mongoid.rb +0 -23
  124. data/spec/models/mongoid/simple_new_dsl_mongoid.rb +0 -25
  125. data/spec/models/mongoid/validator_mongoid.rb +0 -100
  126. data/spec/models/multi_transitioner.rb +0 -34
  127. data/spec/models/multiple_transitions_that_differ_only_by_guard.rb +0 -31
  128. data/spec/models/namespaced_multiple_example.rb +0 -42
  129. data/spec/models/no_initial_state.rb +0 -25
  130. data/spec/models/nobrainer/complex_no_brainer_example.rb +0 -36
  131. data/spec/models/nobrainer/invalid_persistor_no_brainer.rb +0 -39
  132. data/spec/models/nobrainer/no_scope_no_brainer.rb +0 -21
  133. data/spec/models/nobrainer/nobrainer_relationships.rb +0 -25
  134. data/spec/models/nobrainer/silent_persistor_no_brainer.rb +0 -39
  135. data/spec/models/nobrainer/simple_new_dsl_nobrainer.rb +0 -25
  136. data/spec/models/nobrainer/simple_no_brainer.rb +0 -23
  137. data/spec/models/nobrainer/validator_no_brainer.rb +0 -98
  138. data/spec/models/not_auto_loaded/process.rb +0 -21
  139. data/spec/models/parametrised_event.rb +0 -42
  140. data/spec/models/parametrised_event_multiple.rb +0 -29
  141. data/spec/models/process_with_new_dsl.rb +0 -31
  142. data/spec/models/provided_state.rb +0 -24
  143. data/spec/models/redis/complex_redis_example.rb +0 -40
  144. data/spec/models/redis/redis_multiple.rb +0 -20
  145. data/spec/models/redis/redis_simple.rb +0 -20
  146. data/spec/models/sequel/complex_sequel_example.rb +0 -46
  147. data/spec/models/sequel/invalid_persistor.rb +0 -52
  148. data/spec/models/sequel/sequel_multiple.rb +0 -25
  149. data/spec/models/sequel/sequel_simple.rb +0 -26
  150. data/spec/models/sequel/silent_persistor.rb +0 -50
  151. data/spec/models/sequel/transactor.rb +0 -112
  152. data/spec/models/sequel/validator.rb +0 -93
  153. data/spec/models/sequel/worker.rb +0 -12
  154. data/spec/models/silencer.rb +0 -27
  155. data/spec/models/simple_custom_example.rb +0 -53
  156. data/spec/models/simple_example.rb +0 -17
  157. data/spec/models/simple_example_with_guard_args.rb +0 -17
  158. data/spec/models/simple_multiple_example.rb +0 -42
  159. data/spec/models/state_machine_with_failed_event.rb +0 -20
  160. data/spec/models/states_on_one_line_example.rb +0 -8
  161. data/spec/models/sub_class.rb +0 -41
  162. data/spec/models/sub_class_with_more_states.rb +0 -18
  163. data/spec/models/sub_classing.rb +0 -3
  164. data/spec/models/super_class.rb +0 -46
  165. data/spec/models/this_name_better_not_be_in_use.rb +0 -11
  166. data/spec/models/valid_state_name.rb +0 -23
  167. data/spec/spec_helper.rb +0 -26
  168. data/spec/spec_helpers/active_record.rb +0 -8
  169. data/spec/spec_helpers/dynamoid.rb +0 -35
  170. data/spec/spec_helpers/mongoid.rb +0 -26
  171. data/spec/spec_helpers/nobrainer.rb +0 -15
  172. data/spec/spec_helpers/redis.rb +0 -18
  173. data/spec/spec_helpers/remove_warnings.rb +0 -1
  174. data/spec/spec_helpers/sequel.rb +0 -7
  175. data/spec/unit/api_spec.rb +0 -100
  176. data/spec/unit/basic_two_state_machines_example_spec.rb +0 -10
  177. data/spec/unit/callback_multiple_spec.rb +0 -300
  178. data/spec/unit/callbacks_spec.rb +0 -491
  179. data/spec/unit/complex_example_spec.rb +0 -94
  180. data/spec/unit/complex_multiple_example_spec.rb +0 -115
  181. data/spec/unit/edge_cases_spec.rb +0 -16
  182. data/spec/unit/event_multiple_spec.rb +0 -73
  183. data/spec/unit/event_naming_spec.rb +0 -16
  184. data/spec/unit/event_spec.rb +0 -381
  185. data/spec/unit/exception_spec.rb +0 -11
  186. data/spec/unit/guard_arguments_check_spec.rb +0 -9
  187. data/spec/unit/guard_multiple_spec.rb +0 -60
  188. data/spec/unit/guard_spec.rb +0 -89
  189. data/spec/unit/guard_with_params_multiple_spec.rb +0 -10
  190. data/spec/unit/guard_with_params_spec.rb +0 -14
  191. data/spec/unit/guard_without_from_specified_spec.rb +0 -10
  192. data/spec/unit/initial_state_multiple_spec.rb +0 -15
  193. data/spec/unit/initial_state_spec.rb +0 -12
  194. data/spec/unit/inspection_multiple_spec.rb +0 -201
  195. data/spec/unit/inspection_spec.rb +0 -149
  196. data/spec/unit/invoker_spec.rb +0 -189
  197. data/spec/unit/invokers/base_invoker_spec.rb +0 -72
  198. data/spec/unit/invokers/class_invoker_spec.rb +0 -95
  199. data/spec/unit/invokers/literal_invoker_spec.rb +0 -86
  200. data/spec/unit/invokers/proc_invoker_spec.rb +0 -86
  201. data/spec/unit/localizer_spec.rb +0 -78
  202. data/spec/unit/memory_leak_spec.rb +0 -38
  203. data/spec/unit/multiple_transitions_that_differ_only_by_guard_spec.rb +0 -14
  204. data/spec/unit/namespaced_multiple_example_spec.rb +0 -75
  205. data/spec/unit/new_dsl_spec.rb +0 -12
  206. data/spec/unit/override_warning_spec.rb +0 -94
  207. data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +0 -618
  208. data/spec/unit/persistence/active_record_persistence_spec.rb +0 -735
  209. data/spec/unit/persistence/dynamoid_persistence_multiple_spec.rb +0 -135
  210. data/spec/unit/persistence/dynamoid_persistence_spec.rb +0 -84
  211. data/spec/unit/persistence/mongoid_persistence_multiple_spec.rb +0 -200
  212. data/spec/unit/persistence/mongoid_persistence_spec.rb +0 -165
  213. data/spec/unit/persistence/no_brainer_persistence_multiple_spec.rb +0 -198
  214. data/spec/unit/persistence/no_brainer_persistence_spec.rb +0 -158
  215. data/spec/unit/persistence/redis_persistence_multiple_spec.rb +0 -88
  216. data/spec/unit/persistence/redis_persistence_spec.rb +0 -53
  217. data/spec/unit/persistence/sequel_persistence_multiple_spec.rb +0 -148
  218. data/spec/unit/persistence/sequel_persistence_spec.rb +0 -368
  219. data/spec/unit/readme_spec.rb +0 -41
  220. data/spec/unit/reloading_spec.rb +0 -15
  221. data/spec/unit/rspec_matcher_spec.rb +0 -85
  222. data/spec/unit/simple_custom_example_spec.rb +0 -39
  223. data/spec/unit/simple_example_spec.rb +0 -42
  224. data/spec/unit/simple_multiple_example_spec.rb +0 -91
  225. data/spec/unit/state_spec.rb +0 -89
  226. data/spec/unit/states_on_one_line_example_spec.rb +0 -16
  227. data/spec/unit/subclassing_multiple_spec.rb +0 -74
  228. data/spec/unit/subclassing_spec.rb +0 -46
  229. data/spec/unit/transition_spec.rb +0 -436
  230. data/test/minitest_helper.rb +0 -57
  231. 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
@@ -1,12 +0,0 @@
1
- How to
2
-
3
- 1. Run tests for Mongoid
4
-
5
- Start MongoDB
6
-
7
- $> mongod
8
-
9
- Run the specs
10
-
11
- $> rspec spec/unit/persistence/mongoid_persistance_spec.rb
12
-
data/PLANNED_CHANGES.md DELETED
@@ -1,11 +0,0 @@
1
- # Planned changes
2
-
3
- ## later
4
-
5
- * drop support for aasm_column ?
6
-
7
-
8
- # Currently working on
9
-
10
-
11
- # Changes so far
@@ -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
@@ -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: "../"
@@ -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: "../"
@@ -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: "../"
@@ -1,9 +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 "nobrainer", "~> 0.33.0"
8
-
9
- gemspec path: "../"
@@ -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: "../"
@@ -1,9 +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 "nobrainer", "~> 0.33.0"
8
-
9
- gemspec path: "../"