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
@@ -1,29 +0,0 @@
1
- class ParametrisedEventMultiple
2
- include AASM
3
- aasm(:left) do
4
- state :sleeping, :initial => true
5
- state :showering
6
- state :working
7
- state :dating
8
- state :prettying_up
9
-
10
- event :wakeup do
11
- transitions :from => :sleeping, :to => [:showering, :working]
12
- end
13
-
14
- event :dress do
15
- transitions :from => :sleeping, :to => :working, :after => :wear_clothes
16
- transitions :from => :showering, :to => [:working, :dating], :after => Proc.new { |*args| wear_clothes(*args) }
17
- transitions :from => :showering, :to => :prettying_up, :after => [:condition_hair, :fix_hair]
18
- end
19
- end
20
-
21
- def wear_clothes(shirt_color, trouser_type=nil)
22
- end
23
-
24
- def condition_hair
25
- end
26
-
27
- def fix_hair
28
- end
29
- end
@@ -1,31 +0,0 @@
1
- class ProcessWithNewDsl
2
- include AASM
3
-
4
- def self.state(*args)
5
- raise "wrong state method"
6
- end
7
-
8
- attr_accessor :flagged
9
-
10
- aasm do
11
- state :sleeping, :initial => true
12
- state :running, :after_enter => :flag
13
- state :suspended
14
-
15
- event :start do
16
- transitions :from => :sleeping, :to => :running
17
- end
18
- event :stop do
19
- transitions :from => :running, :to => :suspended
20
- end
21
- end
22
-
23
- def flag
24
- self.flagged = true
25
- end
26
-
27
- def self.event(*args)
28
- raise "wrong event method"
29
- end
30
-
31
- end
@@ -1,24 +0,0 @@
1
- class ProvidedState
2
- attr_accessor :transient_store, :persisted_store
3
- include AASM
4
- aasm do
5
- state :alpha, :initial => true
6
- state :beta
7
- state :gamma
8
- event :release do
9
- transitions :from => [:alpha, :beta, :gamma], :to => :beta
10
- end
11
- end
12
-
13
- def aasm_read_state(*args)
14
- :beta
15
- end
16
-
17
- def aasm_write_state(new_state, *args)
18
- @persisted_store = new_state
19
- end
20
-
21
- def aasm_write_state_without_persistence(new_state, *args)
22
- @transient_store = new_state
23
- end
24
- end
@@ -1,40 +0,0 @@
1
- class RedisComplexExample
2
- include Redis::Objects
3
- include AASM
4
-
5
- value :left
6
- value :right
7
-
8
- def id
9
- 1
10
- end
11
-
12
- aasm :left, :column => 'left' do
13
- state :one, :initial => true
14
- state :two
15
- state :three
16
-
17
- event :increment do
18
- transitions :from => :one, :to => :two
19
- transitions :from => :two, :to => :three
20
- end
21
- event :reset do
22
- transitions :from => :three, :to => :one
23
- end
24
- end
25
-
26
- aasm :right, :column => 'right' do
27
- state :alpha, :initial => true
28
- state :beta
29
- state :gamma
30
-
31
- event :level_up do
32
- transitions :from => :alpha, :to => :beta
33
- transitions :from => :beta, :to => :gamma
34
- end
35
- event :level_down do
36
- transitions :from => :gamma, :to => :beta
37
- transitions :from => :beta, :to => :alpha
38
- end
39
- end
40
- end
@@ -1,20 +0,0 @@
1
- class RedisMultiple
2
- include Redis::Objects
3
- include AASM
4
-
5
- value :status
6
-
7
- def id
8
- 1
9
- end
10
-
11
- aasm :left, :column => :status
12
- aasm :left do
13
- state :alpha, :initial => true
14
- state :beta
15
- state :gamma
16
- event :release do
17
- transitions :from => [:alpha, :beta, :gamma], :to => :beta
18
- end
19
- end
20
- end
@@ -1,20 +0,0 @@
1
- class RedisSimple
2
- include Redis::Objects
3
- include AASM
4
-
5
- value :status
6
-
7
- def id
8
- 1
9
- end
10
-
11
- aasm :column => :status
12
- aasm do
13
- state :alpha, :initial => true
14
- state :beta
15
- state :gamma
16
- event :release do
17
- transitions :from => [:alpha, :beta, :gamma], :to => :beta
18
- end
19
- end
20
- end
@@ -1,46 +0,0 @@
1
- db = Sequel::DATABASES.first || Sequel.connect(SEQUEL_DB)
2
-
3
- # if you want to see the statements while running the spec enable the following line
4
- # db.loggers << Logger.new($stderr)
5
- db.create_table(:complex_sequel_examples) do
6
- primary_key :id
7
- String :left
8
- String :right
9
- end
10
-
11
- module Sequel
12
- class ComplexExample < Sequel::Model(:complex_sequel_examples)
13
-
14
- include AASM
15
-
16
- aasm :left, :column => 'left' do
17
- state :one, :initial => true
18
- state :two
19
- state :three
20
-
21
- event :increment do
22
- transitions :from => :one, :to => :two
23
- transitions :from => :two, :to => :three
24
- end
25
- event :reset do
26
- transitions :from => :three, :to => :one
27
- end
28
- end
29
-
30
- aasm :right, :column => 'right' do
31
- state :alpha, :initial => true
32
- state :beta
33
- state :gamma
34
-
35
- event :level_up do
36
- transitions :from => :alpha, :to => :beta
37
- transitions :from => :beta, :to => :gamma
38
- end
39
- event :level_down do
40
- transitions :from => :gamma, :to => :beta
41
- transitions :from => :beta, :to => :alpha
42
- end
43
- end
44
-
45
- end
46
- end
@@ -1,52 +0,0 @@
1
- db = Sequel::DATABASES.first || Sequel.connect(SEQUEL_DB)
2
-
3
- [:invalid_persistors, :multiple_invalid_persistors].each do |table_name|
4
- db.create_table(table_name) do
5
- primary_key :id
6
- String "name"
7
- String "status"
8
- end
9
- end
10
-
11
- module Sequel
12
- class InvalidPersistor < Sequel::Model(:invalid_persistors)
13
- plugin :validation_helpers
14
-
15
- include AASM
16
- aasm :column => :status, :skip_validation_on_save => true do
17
- state :sleeping, :initial => true
18
- state :running
19
- event :run do
20
- transitions :to => :running, :from => :sleeping
21
- end
22
- event :sleep do
23
- transitions :to => :sleeping, :from => :running
24
- end
25
- end
26
-
27
- def validate
28
- super
29
- validates_presence :name
30
- end
31
- end
32
-
33
- class MultipleInvalidPersistor < Sequel::Model(:multiple_invalid_persistors)
34
- plugin :validation_helpers
35
-
36
- include AASM
37
- aasm :left, :column => :status, :skip_validation_on_save => true do
38
- state :sleeping, :initial => true
39
- state :running
40
- event :run do
41
- transitions :to => :running, :from => :sleeping
42
- end
43
- event :sleep do
44
- transitions :to => :sleeping, :from => :running
45
- end
46
- end
47
- def validate
48
- super
49
- validates_presence :name
50
- end
51
- end
52
- end
@@ -1,25 +0,0 @@
1
- db = Sequel::DATABASES.first || Sequel.connect(SEQUEL_DB)
2
-
3
- # if you want to see the statements while running the spec enable the following line
4
- # db.loggers << Logger.new($stderr)
5
- db.create_table(:multiples) do
6
- primary_key :id
7
- String :status
8
- end
9
- module Sequel
10
- class Multiple < Sequel::Model(:multiples)
11
- include AASM
12
-
13
- attr_accessor :default
14
-
15
- aasm :left, :column => :status
16
- aasm :left do
17
- state :alpha, :initial => true
18
- state :beta
19
- state :gamma
20
- event :release do
21
- transitions :from => [:alpha, :beta, :gamma], :to => :beta
22
- end
23
- end
24
- end
25
- end
@@ -1,26 +0,0 @@
1
- db = Sequel::DATABASES.first || Sequel.connect(SEQUEL_DB)
2
-
3
- # if you want to see the statements while running the spec enable the following line
4
- # db.loggers << Logger.new($stderr)
5
- db.create_table(:simples) do
6
- primary_key :id
7
- String :status
8
- end
9
-
10
- module Sequel
11
- class Simple < Sequel::Model(:simples)
12
- include AASM
13
-
14
- attr_accessor :default
15
-
16
- aasm :column => :status
17
- aasm do
18
- state :alpha, :initial => true
19
- state :beta
20
- state :gamma
21
- event :release do
22
- transitions :from => [:alpha, :beta, :gamma], :to => :beta
23
- end
24
- end
25
- end
26
- end
@@ -1,50 +0,0 @@
1
- db = Sequel::DATABASES.first || Sequel.connect(SEQUEL_DB)
2
-
3
- [:silent_persistors, :multiple_silent_persistors].each do |t|
4
- db.create_table(t) do
5
- primary_key :id
6
- String "name"
7
- String "status"
8
- end
9
- end
10
-
11
- module Sequel
12
- class SilentPersistor < Sequel::Model(:silent_persistors)
13
- plugin :validation_helpers
14
-
15
- include AASM
16
- aasm :column => :status, :whiny_persistence => false do
17
- state :sleeping, :initial => true
18
- state :running
19
- event :run do
20
- transitions :to => :running, :from => :sleeping
21
- end
22
- event :sleep do
23
- transitions :to => :sleeping, :from => :running
24
- end
25
- end
26
- def validate
27
- validates_presence :name
28
- end
29
- end
30
-
31
- class MultipleSilentPersistor< Sequel::Model(:multiple_silent_persistors)
32
- plugin :validation_helpers
33
-
34
- include AASM
35
- aasm :left, :column => :status, :whiny_persistence => false do
36
- state :sleeping, :initial => true
37
- state :running
38
- event :run do
39
- transitions :to => :running, :from => :sleeping
40
- end
41
- event :sleep do
42
- transitions :to => :sleeping, :from => :running
43
- end
44
- end
45
-
46
- def validate
47
- validates_presence :name
48
- end
49
- end
50
- end
@@ -1,112 +0,0 @@
1
- db = Sequel::DATABASES.first || Sequel.connect(SEQUEL_DB)
2
-
3
- [:transactors, :no_lock_transactors, :lock_transactors, :lock_no_wait_transactors, :multiple_transactors].each do |table_name|
4
- db.create_table(table_name) do
5
- primary_key :id
6
- String "name"
7
- String "status"
8
- Fixnum "worker_id"
9
- end
10
- end
11
-
12
- module Sequel
13
- class Transactor < Sequel::Model(:transactors)
14
-
15
- many_to_one :worker, class: 'Sequel::Worker'
16
-
17
- include AASM
18
- aasm :column => :status do
19
- state :sleeping, :initial => true
20
- state :running, :before_enter => :start_worker, :after_enter => :fail
21
-
22
- event :run do
23
- transitions :to => :running, :from => :sleeping
24
- end
25
- end
26
-
27
- private
28
-
29
- def start_worker
30
- worker.update(status: 'running')
31
- end
32
-
33
- def fail
34
- raise StandardError.new('failed on purpose')
35
- end
36
-
37
- end
38
-
39
- class NoLockTransactor < Sequel::Model(:no_lock_transactors)
40
-
41
- many_to_one :worker, class: 'Sequel::Worker'
42
-
43
- include AASM
44
-
45
- aasm :column => :status do
46
- state :sleeping, :initial => true
47
- state :running
48
-
49
- event :run do
50
- transitions :to => :running, :from => :sleeping
51
- end
52
- end
53
- end
54
-
55
- class LockTransactor < Sequel::Model(:lock_transactors)
56
-
57
- many_to_one :worker, class: 'Sequel::Worker'
58
-
59
- include AASM
60
-
61
- aasm :column => :status, requires_lock: true do
62
- state :sleeping, :initial => true
63
- state :running
64
-
65
- event :run do
66
- transitions :to => :running, :from => :sleeping
67
- end
68
- end
69
- end
70
-
71
- class LockNoWaitTransactor < Sequel::Model(:lock_no_wait_transactors)
72
-
73
- many_to_one :worker, class: 'Sequel::Worker'
74
-
75
- include AASM
76
-
77
- aasm :column => :status, requires_lock: 'FOR UPDATE NOWAIT' do
78
- state :sleeping, :initial => true
79
- state :running
80
-
81
- event :run do
82
- transitions :to => :running, :from => :sleeping
83
- end
84
- end
85
- end
86
-
87
- class MultipleTransactor < Sequel::Model(:multiple_transactors)
88
-
89
- many_to_one :worker, class: 'Sequel::Worker'
90
-
91
- include AASM
92
- aasm :left, :column => :status do
93
- state :sleeping, :initial => true
94
- state :running, :before_enter => :start_worker, :after_enter => :fail
95
-
96
- event :run do
97
- transitions :to => :running, :from => :sleeping
98
- end
99
- end
100
-
101
- private
102
-
103
- def start_worker
104
- worker.update(:status, 'running')
105
- end
106
-
107
- def fail
108
- raise StandardError.new('failed on purpose')
109
- end
110
-
111
- end
112
- end
@@ -1,93 +0,0 @@
1
- db = Sequel::DATABASES.first || Sequel.connect(SEQUEL_DB)
2
-
3
- db.create_table(:validators) do
4
- primary_key :id
5
- String "name"
6
- String "status"
7
- Fixnum "worker_id"
8
- end
9
-
10
- module Sequel
11
- class Validator < Sequel::Model(:validators)
12
- plugin :validation_helpers
13
-
14
- attr_accessor :after_all_transactions_performed,
15
- :after_transaction_performed_on_fail,
16
- :after_transaction_performed_on_run,
17
- :before_all_transactions_performed,
18
- :before_transaction_performed_on_fail,
19
- :before_transaction_performed_on_run,
20
- :invalid
21
-
22
- def validate
23
- super
24
- errors.add(:validator, "invalid") if invalid
25
- validates_presence :name
26
- end
27
-
28
- include AASM
29
-
30
- aasm :column => :status, :whiny_persistence => true do
31
- before_all_transactions :before_all_transactions
32
- after_all_transactions :after_all_transactions
33
-
34
- state :sleeping, :initial => true
35
- state :running
36
- state :failed, :after_enter => :fail
37
-
38
- event :run, :after_commit => :change_name! do
39
- after_transaction do
40
- @after_transaction_performed_on_run = true
41
- end
42
-
43
- before_transaction do
44
- @before_transaction_performed_on_run = true
45
- end
46
-
47
- transitions :to => :running, :from => :sleeping
48
- end
49
-
50
- event :sleep do
51
- after_commit do |name|
52
- change_name_on_sleep name
53
- end
54
- transitions :to => :sleeping, :from => :running
55
- end
56
-
57
- event :fail do
58
- after_transaction do
59
- @after_transaction_performed_on_fail = true
60
- end
61
-
62
- before_transaction do
63
- @before_transaction_performed_on_fail = true
64
- end
65
-
66
- transitions :to => :failed, :from => [:sleeping, :running]
67
- end
68
- end
69
-
70
- def change_name!
71
- self.name = "name changed"
72
- save(raise_on_failure: true)
73
- end
74
-
75
- def change_name_on_sleep name
76
- self.name = name
77
- save(raise_on_failure: true)
78
- end
79
-
80
- def fail
81
- raise StandardError.new('failed on purpose')
82
- end
83
-
84
- def after_all_transactions
85
- @after_all_transactions_performed = true
86
- end
87
-
88
- def before_all_transactions
89
- @before_all_transactions_performed = true
90
- end
91
- end
92
-
93
- end
@@ -1,12 +0,0 @@
1
- db = Sequel::DATABASES.first || Sequel.connect(SEQUEL_DB)
2
-
3
- db.create_table(:workers) do
4
- primary_key :id
5
- String "name"
6
- String "status"
7
- end
8
-
9
- module Sequel
10
- class Worker < Sequel::Model(:workers)
11
- end
12
- end
@@ -1,27 +0,0 @@
1
- class Silencer
2
- include AASM
3
-
4
- # yes, this line is here on purpose
5
- # by this, we test if overriding configuration options works if
6
- # the state machine is "re-opened"
7
- aasm :whiny_transitions => true
8
-
9
- aasm :whiny_transitions => false do
10
- state :silent, :initial => true
11
- state :crying
12
- state :smiling
13
-
14
- event :cry do
15
- transitions :from => :silent, :to => :crying
16
- end
17
-
18
- event :smile do
19
- transitions :from => :crying, :to => :smiling
20
- end
21
-
22
- event :smile_any do
23
- transitions :to => :smiling
24
- end
25
- end
26
-
27
- end
@@ -1,53 +0,0 @@
1
- class CustomAASMBase < AASM::Base
2
- # A custom transiton that we want available across many AASM models.
3
- def count_transitions!
4
- klass.class_eval do
5
- aasm :with_klass => CustomAASMBase do
6
- after_all_transitions :increment_transition_count
7
- end
8
- end
9
- end
10
-
11
- # A custom annotation that we want available across many AASM models.
12
- def requires_guards!
13
- klass.class_eval do
14
- attr_reader :authorizable_called,
15
- :transition_count,
16
- :fillable_called
17
-
18
- def authorizable?
19
- @authorizable_called = true
20
- end
21
-
22
- def fillable?
23
- @fillable_called = true
24
- end
25
-
26
- def increment_transition_count
27
- @transition_count ||= 0
28
- @transition_count += 1
29
- end
30
- end
31
- end
32
- end
33
-
34
- class SimpleCustomExample
35
- include AASM
36
-
37
- # Let's build an AASM state machine with our custom class.
38
- aasm :with_klass => CustomAASMBase do
39
- requires_guards!
40
- count_transitions!
41
-
42
- state :initialised, :initial => true
43
- state :filled_out
44
- state :authorised
45
-
46
- event :fill_out do
47
- transitions :from => :initialised, :to => :filled_out, :guard => :fillable?
48
- end
49
- event :authorise do
50
- transitions :from => :filled_out, :to => :authorised, :guard => :authorizable?
51
- end
52
- end
53
- end
@@ -1,17 +0,0 @@
1
- class SimpleExample
2
- include AASM
3
- aasm do
4
- state :initialised, :initial => true
5
- state :filled_out
6
- state :authorised
7
-
8
- event :fill_out do
9
- transitions :from => :initialised, :to => :filled_out
10
- end
11
- event :authorise do
12
- transitions :from => :filled_out, :to => :authorised
13
- end
14
-
15
- end
16
-
17
- end