aasm 4.12.3 → 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 (218) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +284 -119
  3. data/lib/aasm/aasm.rb +30 -27
  4. data/lib/aasm/base.rb +61 -11
  5. data/lib/aasm/configuration.rb +3 -0
  6. data/lib/aasm/core/event.rb +26 -30
  7. data/lib/aasm/core/invoker.rb +129 -0
  8. data/lib/aasm/core/invokers/base_invoker.rb +75 -0
  9. data/lib/aasm/core/invokers/class_invoker.rb +52 -0
  10. data/lib/aasm/core/invokers/literal_invoker.rb +49 -0
  11. data/lib/aasm/core/invokers/proc_invoker.rb +59 -0
  12. data/lib/aasm/core/state.rb +16 -14
  13. data/lib/aasm/core/transition.rb +8 -69
  14. data/lib/aasm/dsl_helper.rb +24 -22
  15. data/lib/aasm/errors.rb +5 -3
  16. data/lib/aasm/instance_base.rb +28 -5
  17. data/lib/aasm/localizer.rb +13 -3
  18. data/lib/aasm/persistence/active_record_persistence.rb +25 -5
  19. data/lib/aasm/persistence/base.rb +14 -3
  20. data/lib/aasm/persistence/core_data_query_persistence.rb +2 -1
  21. data/lib/aasm/persistence/dynamoid_persistence.rb +1 -1
  22. data/lib/aasm/persistence/mongoid_persistence.rb +1 -1
  23. data/lib/aasm/persistence/no_brainer_persistence.rb +105 -0
  24. data/lib/aasm/persistence/orm.rb +23 -19
  25. data/lib/aasm/persistence/plain_persistence.rb +2 -1
  26. data/lib/aasm/persistence/redis_persistence.rb +1 -1
  27. data/lib/aasm/persistence/sequel_persistence.rb +0 -1
  28. data/lib/aasm/persistence.rb +3 -0
  29. data/lib/aasm/rspec/allow_event.rb +5 -1
  30. data/lib/aasm/rspec/allow_transition_to.rb +5 -1
  31. data/lib/aasm/rspec/transition_from.rb +5 -1
  32. data/lib/aasm/version.rb +1 -1
  33. data/lib/aasm.rb +5 -2
  34. data/lib/generators/aasm/orm_helpers.rb +7 -1
  35. data/lib/generators/active_record/aasm_generator.rb +3 -1
  36. data/lib/generators/active_record/templates/migration.rb +1 -1
  37. data/lib/generators/nobrainer/aasm_generator.rb +28 -0
  38. data/lib/motion-aasm.rb +1 -0
  39. metadata +42 -344
  40. data/.document +0 -6
  41. data/.gitignore +0 -20
  42. data/.travis.yml +0 -52
  43. data/API +0 -34
  44. data/Appraisals +0 -43
  45. data/CHANGELOG.md +0 -370
  46. data/CODE_OF_CONDUCT.md +0 -13
  47. data/CONTRIBUTING.md +0 -24
  48. data/Gemfile +0 -7
  49. data/Gemfile.lock_old +0 -151
  50. data/HOWTO +0 -12
  51. data/PLANNED_CHANGES.md +0 -11
  52. data/README_FROM_VERSION_3_TO_4.md +0 -240
  53. data/Rakefile +0 -31
  54. data/TESTING.md +0 -25
  55. data/aasm.gemspec +0 -35
  56. data/callbacks.txt +0 -51
  57. data/gemfiles/rails_3.2.gemfile +0 -13
  58. data/gemfiles/rails_4.0.gemfile +0 -15
  59. data/gemfiles/rails_4.2.gemfile +0 -16
  60. data/gemfiles/rails_4.2_mongoid_5.gemfile +0 -11
  61. data/gemfiles/rails_5.0.gemfile +0 -14
  62. data/spec/database.rb +0 -44
  63. data/spec/database.yml +0 -3
  64. data/spec/en.yml +0 -12
  65. data/spec/en_deprecated_style.yml +0 -10
  66. data/spec/generators/active_record_generator_spec.rb +0 -47
  67. data/spec/generators/mongoid_generator_spec.rb +0 -31
  68. data/spec/models/active_record/basic_active_record_two_state_machines_example.rb +0 -25
  69. data/spec/models/active_record/complex_active_record_example.rb +0 -37
  70. data/spec/models/active_record/derivate_new_dsl.rb +0 -7
  71. data/spec/models/active_record/false_state.rb +0 -35
  72. data/spec/models/active_record/gate.rb +0 -39
  73. data/spec/models/active_record/invalid_persistor.rb +0 -29
  74. data/spec/models/active_record/localizer_test_model.rb +0 -34
  75. data/spec/models/active_record/no_direct_assignment.rb +0 -21
  76. data/spec/models/active_record/no_scope.rb +0 -21
  77. data/spec/models/active_record/persisted_state.rb +0 -12
  78. data/spec/models/active_record/provided_and_persisted_state.rb +0 -24
  79. data/spec/models/active_record/reader.rb +0 -7
  80. data/spec/models/active_record/readme_job.rb +0 -21
  81. data/spec/models/active_record/silent_persistor.rb +0 -29
  82. data/spec/models/active_record/simple_new_dsl.rb +0 -17
  83. data/spec/models/active_record/thief.rb +0 -29
  84. data/spec/models/active_record/transactor.rb +0 -124
  85. data/spec/models/active_record/transient.rb +0 -6
  86. data/spec/models/active_record/validator.rb +0 -118
  87. data/spec/models/active_record/with_enum.rb +0 -39
  88. data/spec/models/active_record/with_enum_without_column.rb +0 -38
  89. data/spec/models/active_record/with_false_enum.rb +0 -31
  90. data/spec/models/active_record/with_true_enum.rb +0 -39
  91. data/spec/models/active_record/worker.rb +0 -2
  92. data/spec/models/active_record/writer.rb +0 -6
  93. data/spec/models/basic_two_state_machines_example.rb +0 -25
  94. data/spec/models/callbacks/basic.rb +0 -98
  95. data/spec/models/callbacks/basic_multiple.rb +0 -75
  96. data/spec/models/callbacks/guard_within_block.rb +0 -67
  97. data/spec/models/callbacks/guard_within_block_multiple.rb +0 -66
  98. data/spec/models/callbacks/multiple_transitions_transition_guard.rb +0 -66
  99. data/spec/models/callbacks/multiple_transitions_transition_guard_multiple.rb +0 -65
  100. data/spec/models/callbacks/private_method.rb +0 -44
  101. data/spec/models/callbacks/private_method_multiple.rb +0 -44
  102. data/spec/models/callbacks/with_args.rb +0 -62
  103. data/spec/models/callbacks/with_args_multiple.rb +0 -61
  104. data/spec/models/callbacks/with_state_arg.rb +0 -30
  105. data/spec/models/callbacks/with_state_arg_multiple.rb +0 -26
  106. data/spec/models/complex_example.rb +0 -222
  107. data/spec/models/conversation.rb +0 -93
  108. data/spec/models/default_state.rb +0 -12
  109. data/spec/models/double_definer.rb +0 -21
  110. data/spec/models/dynamoid/complex_dynamoid_example.rb +0 -37
  111. data/spec/models/dynamoid/dynamoid_multiple.rb +0 -18
  112. data/spec/models/dynamoid/dynamoid_simple.rb +0 -18
  113. data/spec/models/foo.rb +0 -106
  114. data/spec/models/foo_callback_multiple.rb +0 -45
  115. data/spec/models/guard_arguments_check.rb +0 -17
  116. data/spec/models/guard_with_params.rb +0 -24
  117. data/spec/models/guard_with_params_multiple.rb +0 -18
  118. data/spec/models/guardian.rb +0 -58
  119. data/spec/models/guardian_multiple.rb +0 -48
  120. data/spec/models/guardian_without_from_specified.rb +0 -18
  121. data/spec/models/initial_state_proc.rb +0 -31
  122. data/spec/models/mongoid/complex_mongoid_example.rb +0 -37
  123. data/spec/models/mongoid/invalid_persistor_mongoid.rb +0 -39
  124. data/spec/models/mongoid/mongoid_relationships.rb +0 -26
  125. data/spec/models/mongoid/no_scope_mongoid.rb +0 -21
  126. data/spec/models/mongoid/silent_persistor_mongoid.rb +0 -39
  127. data/spec/models/mongoid/simple_mongoid.rb +0 -23
  128. data/spec/models/mongoid/simple_new_dsl_mongoid.rb +0 -25
  129. data/spec/models/mongoid/validator_mongoid.rb +0 -100
  130. data/spec/models/multi_transitioner.rb +0 -34
  131. data/spec/models/multiple_transitions_that_differ_only_by_guard.rb +0 -31
  132. data/spec/models/namespaced_multiple_example.rb +0 -42
  133. data/spec/models/no_initial_state.rb +0 -25
  134. data/spec/models/not_auto_loaded/process.rb +0 -21
  135. data/spec/models/parametrised_event.rb +0 -42
  136. data/spec/models/parametrised_event_multiple.rb +0 -29
  137. data/spec/models/process_with_new_dsl.rb +0 -31
  138. data/spec/models/provided_state.rb +0 -24
  139. data/spec/models/redis/complex_redis_example.rb +0 -40
  140. data/spec/models/redis/redis_multiple.rb +0 -20
  141. data/spec/models/redis/redis_simple.rb +0 -20
  142. data/spec/models/sequel/complex_sequel_example.rb +0 -46
  143. data/spec/models/sequel/invalid_persistor.rb +0 -52
  144. data/spec/models/sequel/sequel_multiple.rb +0 -25
  145. data/spec/models/sequel/sequel_simple.rb +0 -26
  146. data/spec/models/sequel/silent_persistor.rb +0 -50
  147. data/spec/models/sequel/transactor.rb +0 -112
  148. data/spec/models/sequel/validator.rb +0 -93
  149. data/spec/models/sequel/worker.rb +0 -12
  150. data/spec/models/silencer.rb +0 -27
  151. data/spec/models/simple_custom_example.rb +0 -53
  152. data/spec/models/simple_example.rb +0 -15
  153. data/spec/models/simple_multiple_example.rb +0 -42
  154. data/spec/models/state_machine_with_failed_event.rb +0 -20
  155. data/spec/models/states_on_one_line_example.rb +0 -8
  156. data/spec/models/sub_class.rb +0 -41
  157. data/spec/models/sub_class_with_more_states.rb +0 -18
  158. data/spec/models/sub_classing.rb +0 -3
  159. data/spec/models/super_class.rb +0 -46
  160. data/spec/models/this_name_better_not_be_in_use.rb +0 -11
  161. data/spec/models/valid_state_name.rb +0 -23
  162. data/spec/spec_helper.rb +0 -26
  163. data/spec/spec_helpers/active_record.rb +0 -7
  164. data/spec/spec_helpers/dynamoid.rb +0 -33
  165. data/spec/spec_helpers/mongoid.rb +0 -7
  166. data/spec/spec_helpers/redis.rb +0 -15
  167. data/spec/spec_helpers/remove_warnings.rb +0 -1
  168. data/spec/spec_helpers/sequel.rb +0 -7
  169. data/spec/unit/api_spec.rb +0 -100
  170. data/spec/unit/basic_two_state_machines_example_spec.rb +0 -10
  171. data/spec/unit/callback_multiple_spec.rb +0 -300
  172. data/spec/unit/callbacks_spec.rb +0 -491
  173. data/spec/unit/complex_example_spec.rb +0 -94
  174. data/spec/unit/complex_multiple_example_spec.rb +0 -115
  175. data/spec/unit/edge_cases_spec.rb +0 -16
  176. data/spec/unit/event_multiple_spec.rb +0 -73
  177. data/spec/unit/event_naming_spec.rb +0 -16
  178. data/spec/unit/event_spec.rb +0 -381
  179. data/spec/unit/exception_spec.rb +0 -11
  180. data/spec/unit/guard_arguments_check_spec.rb +0 -9
  181. data/spec/unit/guard_multiple_spec.rb +0 -60
  182. data/spec/unit/guard_spec.rb +0 -89
  183. data/spec/unit/guard_with_params_multiple_spec.rb +0 -10
  184. data/spec/unit/guard_with_params_spec.rb +0 -14
  185. data/spec/unit/guard_without_from_specified_spec.rb +0 -10
  186. data/spec/unit/initial_state_multiple_spec.rb +0 -15
  187. data/spec/unit/initial_state_spec.rb +0 -12
  188. data/spec/unit/inspection_multiple_spec.rb +0 -201
  189. data/spec/unit/inspection_spec.rb +0 -149
  190. data/spec/unit/localizer_spec.rb +0 -78
  191. data/spec/unit/memory_leak_spec.rb +0 -38
  192. data/spec/unit/multiple_transitions_that_differ_only_by_guard_spec.rb +0 -14
  193. data/spec/unit/namespaced_multiple_example_spec.rb +0 -75
  194. data/spec/unit/new_dsl_spec.rb +0 -12
  195. data/spec/unit/override_warning_spec.rb +0 -94
  196. data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +0 -618
  197. data/spec/unit/persistence/active_record_persistence_spec.rb +0 -735
  198. data/spec/unit/persistence/dynamoid_persistence_multiple_spec.rb +0 -135
  199. data/spec/unit/persistence/dynamoid_persistence_spec.rb +0 -84
  200. data/spec/unit/persistence/mongoid_persistence_multiple_spec.rb +0 -204
  201. data/spec/unit/persistence/mongoid_persistence_spec.rb +0 -169
  202. data/spec/unit/persistence/redis_persistence_multiple_spec.rb +0 -88
  203. data/spec/unit/persistence/redis_persistence_spec.rb +0 -53
  204. data/spec/unit/persistence/sequel_persistence_multiple_spec.rb +0 -148
  205. data/spec/unit/persistence/sequel_persistence_spec.rb +0 -368
  206. data/spec/unit/readme_spec.rb +0 -41
  207. data/spec/unit/reloading_spec.rb +0 -15
  208. data/spec/unit/rspec_matcher_spec.rb +0 -79
  209. data/spec/unit/simple_custom_example_spec.rb +0 -39
  210. data/spec/unit/simple_example_spec.rb +0 -42
  211. data/spec/unit/simple_multiple_example_spec.rb +0 -91
  212. data/spec/unit/state_spec.rb +0 -89
  213. data/spec/unit/states_on_one_line_example_spec.rb +0 -16
  214. data/spec/unit/subclassing_multiple_spec.rb +0 -74
  215. data/spec/unit/subclassing_spec.rb +0 -46
  216. data/spec/unit/transition_spec.rb +0 -436
  217. data/test/minitest_helper.rb +0 -57
  218. 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
@@ -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 "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
7
- gem "rails", "~>3.2.22"
8
- gem "mongoid", "~>3.1"
9
- gem "sequel"
10
- gem "bson_ext", :platforms => :ruby
11
- gem "test-unit", "~> 3.0"
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 "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
7
- gem "rails", "4.0.13"
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
-
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 "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
7
- gem "rails", "4.2.5"
8
- gem "nokogiri", "1.6.8.1", :platforms => [:ruby_19]
9
- gem "mime-types", "~> 2", :platforms => [:ruby_19, :jruby]
10
- gem "mongoid", "~>4.0"
11
- gem "sequel"
12
- gem "dynamoid", "~> 1", :platforms => :ruby
13
- gem "aws-sdk", "~>2", :platforms => :ruby
14
- gem "redis-objects"
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 "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
7
- gem "rails", "4.2.5"
8
- gem "mime-types", "~> 2", :platforms => [:ruby_19, :jruby]
9
- gem "mongoid", "~>5.0"
10
-
11
- gemspec :path => "../"
@@ -1,14 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "sqlite3", :platforms => :ruby
6
- gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
7
- gem "rails", "5.0.0"
8
- gem "mongoid", "~>6.0"
9
- gem "sequel"
10
- gem "dynamoid", "~> 1", :platforms => :ruby
11
- gem "aws-sdk", "~>2", :platforms => :ruby
12
- gem "redis-objects"
13
-
14
- gemspec :path => "../"
data/spec/database.rb DELETED
@@ -1,44 +0,0 @@
1
- ActiveRecord::Migration.suppress_messages do
2
- %w{gates multiple_gates readers writers transients simples no_scopes multiple_no_scopes no_direct_assignments multiple_no_direct_assignments thieves multiple_thieves localizer_test_models persisted_states provided_and_persisted_states with_enums with_enum_without_columns multiple_with_enum_without_columns with_true_enums with_false_enums false_states multiple_with_enums multiple_with_true_enums multiple_with_false_enums multiple_false_states readme_jobs}.each do |table_name|
3
- ActiveRecord::Migration.create_table table_name, :force => true do |t|
4
- t.string "aasm_state"
5
- end
6
- end
7
-
8
- ActiveRecord::Migration.create_table "simple_new_dsls", :force => true do |t|
9
- t.string "status"
10
- end
11
- ActiveRecord::Migration.create_table "multiple_simple_new_dsls", :force => true do |t|
12
- t.string "status"
13
- end
14
-
15
- ActiveRecord::Migration.create_table "complex_active_record_examples", :force => true do |t|
16
- t.string "left"
17
- t.string "right"
18
- end
19
-
20
- %w(validators multiple_validators workers invalid_persistors multiple_invalid_persistors silent_persistors multiple_silent_persistors).each do |table_name|
21
- ActiveRecord::Migration.create_table table_name, :force => true do |t|
22
- t.string "name"
23
- t.string "status"
24
- end
25
- end
26
-
27
- %w(transactors no_lock_transactors lock_transactors lock_no_wait_transactors no_transactors multiple_transactors).each do |table_name|
28
- ActiveRecord::Migration.create_table table_name, :force => true do |t|
29
- t.string "name"
30
- t.string "status"
31
- t.integer "worker_id"
32
- end
33
- end
34
-
35
- ActiveRecord::Migration.create_table "fathers", :force => true do |t|
36
- t.string "aasm_state"
37
- t.string "type"
38
- end
39
-
40
- ActiveRecord::Migration.create_table "basic_active_record_two_state_machines_examples", :force => true do |t|
41
- t.string "search"
42
- t.string "sync"
43
- end
44
- end
data/spec/database.yml DELETED
@@ -1,3 +0,0 @@
1
- sqlite3:
2
- adapter: sqlite3
3
- database: spec/aasm.sqlite3.db
data/spec/en.yml DELETED
@@ -1,12 +0,0 @@
1
- en:
2
- activerecord:
3
- events:
4
- localizer_test_model:
5
- close: "Let's close it!"
6
-
7
- attributes:
8
- localizer_test_model:
9
- aasm_state/opened: "It's open now!"
10
- errors:
11
- messages:
12
- record_invalid: "Invalid record"