aasm 4.5.1 → 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 (186) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE +1 -1
  3. data/README.md +809 -129
  4. data/lib/aasm/aasm.rb +74 -37
  5. data/lib/aasm/base.rb +188 -41
  6. data/lib/aasm/configuration.rb +27 -2
  7. data/lib/aasm/core/event.rb +75 -47
  8. data/lib/aasm/core/invoker.rb +129 -0
  9. data/lib/aasm/core/invokers/base_invoker.rb +75 -0
  10. data/lib/aasm/core/invokers/class_invoker.rb +52 -0
  11. data/lib/aasm/core/invokers/literal_invoker.rb +49 -0
  12. data/lib/aasm/core/invokers/proc_invoker.rb +59 -0
  13. data/lib/aasm/core/state.rb +22 -13
  14. data/lib/aasm/core/transition.rb +30 -23
  15. data/lib/aasm/dsl_helper.rb +24 -22
  16. data/lib/aasm/errors.rb +8 -5
  17. data/lib/aasm/instance_base.rb +63 -15
  18. data/lib/aasm/localizer.rb +13 -3
  19. data/lib/aasm/minitest/allow_event.rb +13 -0
  20. data/lib/aasm/minitest/allow_transition_to.rb +13 -0
  21. data/lib/aasm/minitest/have_state.rb +13 -0
  22. data/lib/aasm/minitest/transition_from.rb +21 -0
  23. data/lib/aasm/minitest.rb +5 -0
  24. data/lib/aasm/minitest_spec.rb +15 -0
  25. data/lib/aasm/persistence/active_record_persistence.rb +87 -79
  26. data/lib/aasm/persistence/base.rb +30 -30
  27. data/lib/aasm/persistence/core_data_query_persistence.rb +94 -0
  28. data/lib/aasm/persistence/dynamoid_persistence.rb +92 -0
  29. data/lib/aasm/persistence/mongoid_persistence.rb +49 -35
  30. data/lib/aasm/persistence/no_brainer_persistence.rb +105 -0
  31. data/lib/aasm/persistence/orm.rb +154 -0
  32. data/lib/aasm/persistence/plain_persistence.rb +2 -1
  33. data/lib/aasm/persistence/redis_persistence.rb +112 -0
  34. data/lib/aasm/persistence/sequel_persistence.rb +37 -67
  35. data/lib/aasm/persistence.rb +20 -5
  36. data/lib/aasm/rspec/allow_event.rb +5 -1
  37. data/lib/aasm/rspec/allow_transition_to.rb +5 -1
  38. data/lib/aasm/rspec/transition_from.rb +8 -4
  39. data/lib/aasm/state_machine.rb +6 -12
  40. data/lib/aasm/state_machine_store.rb +76 -0
  41. data/lib/aasm/version.rb +1 -1
  42. data/lib/aasm.rb +8 -2
  43. data/lib/generators/aasm/aasm_generator.rb +16 -0
  44. data/lib/generators/aasm/orm_helpers.rb +41 -0
  45. data/lib/generators/active_record/aasm_generator.rb +40 -0
  46. data/lib/generators/active_record/templates/migration.rb +8 -0
  47. data/lib/generators/active_record/templates/migration_existing.rb +5 -0
  48. data/lib/generators/mongoid/aasm_generator.rb +28 -0
  49. data/lib/generators/nobrainer/aasm_generator.rb +28 -0
  50. data/lib/motion-aasm.rb +37 -0
  51. metadata +104 -259
  52. data/.document +0 -6
  53. data/.gitignore +0 -19
  54. data/.travis.yml +0 -37
  55. data/API +0 -34
  56. data/CHANGELOG.md +0 -272
  57. data/CODE_OF_CONDUCT.md +0 -13
  58. data/Gemfile +0 -15
  59. data/HOWTO +0 -12
  60. data/PLANNED_CHANGES.md +0 -11
  61. data/README_FROM_VERSION_3_TO_4.md +0 -240
  62. data/Rakefile +0 -26
  63. data/aasm.gemspec +0 -31
  64. data/callbacks.txt +0 -51
  65. data/gemfiles/rails_3.2.gemfile +0 -14
  66. data/gemfiles/rails_4.0.gemfile +0 -12
  67. data/gemfiles/rails_4.0_mongo_mapper.gemfile +0 -14
  68. data/gemfiles/rails_4.1.gemfile +0 -12
  69. data/gemfiles/rails_4.1_mongo_mapper.gemfile +0 -14
  70. data/gemfiles/rails_4.2.gemfile +0 -12
  71. data/gemfiles/rails_4.2_mongo_mapper.gemfile +0 -14
  72. data/gemfiles/rails_4.2_mongoid_5.gemfile +0 -12
  73. data/lib/aasm/persistence/mongo_mapper_persistence.rb +0 -157
  74. data/spec/database.rb +0 -63
  75. data/spec/database.yml +0 -3
  76. data/spec/en.yml +0 -9
  77. data/spec/en_deprecated_style.yml +0 -10
  78. data/spec/models/active_record/basic_active_record_two_state_machines_example.rb +0 -25
  79. data/spec/models/active_record/complex_active_record_example.rb +0 -33
  80. data/spec/models/active_record/derivate_new_dsl.rb +0 -7
  81. data/spec/models/active_record/false_state.rb +0 -35
  82. data/spec/models/active_record/gate.rb +0 -39
  83. data/spec/models/active_record/localizer_test_model.rb +0 -34
  84. data/spec/models/active_record/no_direct_assignment.rb +0 -21
  85. data/spec/models/active_record/no_scope.rb +0 -21
  86. data/spec/models/active_record/persisted_state.rb +0 -12
  87. data/spec/models/active_record/provided_and_persisted_state.rb +0 -24
  88. data/spec/models/active_record/reader.rb +0 -7
  89. data/spec/models/active_record/readme_job.rb +0 -21
  90. data/spec/models/active_record/simple_new_dsl.rb +0 -17
  91. data/spec/models/active_record/thief.rb +0 -29
  92. data/spec/models/active_record/transient.rb +0 -6
  93. data/spec/models/active_record/with_enum.rb +0 -39
  94. data/spec/models/active_record/with_false_enum.rb +0 -31
  95. data/spec/models/active_record/with_true_enum.rb +0 -39
  96. data/spec/models/active_record/writer.rb +0 -6
  97. data/spec/models/basic_two_state_machines_example.rb +0 -25
  98. data/spec/models/callbacks/basic.rb +0 -78
  99. data/spec/models/callbacks/basic_multiple.rb +0 -75
  100. data/spec/models/callbacks/guard_within_block.rb +0 -66
  101. data/spec/models/callbacks/guard_within_block_multiple.rb +0 -66
  102. data/spec/models/callbacks/multiple_transitions_transition_guard.rb +0 -65
  103. data/spec/models/callbacks/multiple_transitions_transition_guard_multiple.rb +0 -65
  104. data/spec/models/callbacks/private_method.rb +0 -44
  105. data/spec/models/callbacks/private_method_multiple.rb +0 -44
  106. data/spec/models/callbacks/with_args.rb +0 -61
  107. data/spec/models/callbacks/with_args_multiple.rb +0 -61
  108. data/spec/models/callbacks/with_state_arg.rb +0 -26
  109. data/spec/models/callbacks/with_state_arg_multiple.rb +0 -26
  110. data/spec/models/complex_example.rb +0 -222
  111. data/spec/models/conversation.rb +0 -93
  112. data/spec/models/default_state.rb +0 -12
  113. data/spec/models/double_definer.rb +0 -21
  114. data/spec/models/foo.rb +0 -92
  115. data/spec/models/foo_callback_multiple.rb +0 -45
  116. data/spec/models/guardian.rb +0 -48
  117. data/spec/models/guardian_multiple.rb +0 -48
  118. data/spec/models/initial_state_proc.rb +0 -31
  119. data/spec/models/invalid_persistor.rb +0 -31
  120. data/spec/models/mongo_mapper/complex_mongo_mapper_example.rb +0 -37
  121. data/spec/models/mongo_mapper/no_scope_mongo_mapper.rb +0 -21
  122. data/spec/models/mongo_mapper/simple_mongo_mapper.rb +0 -23
  123. data/spec/models/mongo_mapper/simple_new_dsl_mongo_mapper.rb +0 -25
  124. data/spec/models/mongoid/complex_mongoid_example.rb +0 -37
  125. data/spec/models/mongoid/no_scope_mongoid.rb +0 -21
  126. data/spec/models/mongoid/simple_mongoid.rb +0 -23
  127. data/spec/models/mongoid/simple_new_dsl_mongoid.rb +0 -25
  128. data/spec/models/no_initial_state.rb +0 -25
  129. data/spec/models/not_auto_loaded/process.rb +0 -21
  130. data/spec/models/parametrised_event.rb +0 -29
  131. data/spec/models/parametrised_event_multiple.rb +0 -29
  132. data/spec/models/process_with_new_dsl.rb +0 -31
  133. data/spec/models/provided_state.rb +0 -24
  134. data/spec/models/sequel/complex_sequel_example.rb +0 -45
  135. data/spec/models/sequel/sequel_multiple.rb +0 -25
  136. data/spec/models/sequel/sequel_simple.rb +0 -25
  137. data/spec/models/silencer.rb +0 -27
  138. data/spec/models/simple_example.rb +0 -15
  139. data/spec/models/simple_multiple_example.rb +0 -30
  140. data/spec/models/state_machine_with_failed_event.rb +0 -12
  141. data/spec/models/sub_class.rb +0 -7
  142. data/spec/models/sub_class_with_more_states.rb +0 -18
  143. data/spec/models/sub_classing.rb +0 -3
  144. data/spec/models/super_class.rb +0 -46
  145. data/spec/models/this_name_better_not_be_in_use.rb +0 -11
  146. data/spec/models/transactor.rb +0 -53
  147. data/spec/models/valid_state_name.rb +0 -23
  148. data/spec/models/validator.rb +0 -79
  149. data/spec/models/worker.rb +0 -2
  150. data/spec/spec_helper.rb +0 -25
  151. data/spec/unit/api_spec.rb +0 -77
  152. data/spec/unit/basic_two_state_machines_example_spec.rb +0 -10
  153. data/spec/unit/callback_multiple_spec.rb +0 -295
  154. data/spec/unit/callbacks_spec.rb +0 -296
  155. data/spec/unit/complex_example_spec.rb +0 -84
  156. data/spec/unit/complex_multiple_example_spec.rb +0 -99
  157. data/spec/unit/edge_cases_spec.rb +0 -16
  158. data/spec/unit/event_multiple_spec.rb +0 -73
  159. data/spec/unit/event_naming_spec.rb +0 -11
  160. data/spec/unit/event_spec.rb +0 -322
  161. data/spec/unit/guard_multiple_spec.rb +0 -60
  162. data/spec/unit/guard_spec.rb +0 -60
  163. data/spec/unit/initial_state_multiple_spec.rb +0 -15
  164. data/spec/unit/initial_state_spec.rb +0 -12
  165. data/spec/unit/inspection_multiple_spec.rb +0 -201
  166. data/spec/unit/inspection_spec.rb +0 -111
  167. data/spec/unit/localizer_spec.rb +0 -76
  168. data/spec/unit/memory_leak_spec.rb +0 -38
  169. data/spec/unit/new_dsl_spec.rb +0 -12
  170. data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +0 -573
  171. data/spec/unit/persistence/active_record_persistence_spec.rb +0 -552
  172. data/spec/unit/persistence/mongo_mapper_persistence_multiple_spec.rb +0 -146
  173. data/spec/unit/persistence/mongo_mapper_persistence_spec.rb +0 -93
  174. data/spec/unit/persistence/mongoid_persistence_multiple_spec.rb +0 -127
  175. data/spec/unit/persistence/mongoid_persistence_spec.rb +0 -79
  176. data/spec/unit/persistence/sequel_persistence_multiple_spec.rb +0 -153
  177. data/spec/unit/persistence/sequel_persistence_spec.rb +0 -100
  178. data/spec/unit/readme_spec.rb +0 -42
  179. data/spec/unit/reloading_spec.rb +0 -15
  180. data/spec/unit/rspec_matcher_spec.rb +0 -79
  181. data/spec/unit/simple_example_spec.rb +0 -42
  182. data/spec/unit/simple_multiple_example_spec.rb +0 -63
  183. data/spec/unit/state_spec.rb +0 -89
  184. data/spec/unit/subclassing_multiple_spec.rb +0 -39
  185. data/spec/unit/subclassing_spec.rb +0 -31
  186. data/spec/unit/transition_spec.rb +0 -291
@@ -1,29 +0,0 @@
1
- class Thief < ActiveRecord::Base
2
- if ActiveRecord::VERSION::MAJOR >= 3
3
- self.table_name = 'thieves'
4
- else
5
- set_table_name "thieves"
6
- end
7
- include AASM
8
- aasm do
9
- state :rich
10
- state :jailed
11
- initial_state Proc.new {|thief| thief.skilled ? :rich : :jailed }
12
- end
13
- attr_accessor :skilled, :aasm_state
14
- end
15
-
16
- class MultipleThief < ActiveRecord::Base
17
- if ActiveRecord::VERSION::MAJOR >= 3
18
- self.table_name = 'multiple_thieves'
19
- else
20
- set_table_name "multiple_thieves"
21
- end
22
- include AASM
23
- aasm :left, :column => :aasm_state do
24
- state :rich
25
- state :jailed
26
- initial_state Proc.new {|thief| thief.skilled ? :rich : :jailed }
27
- end
28
- attr_accessor :skilled, :aasm_state
29
- end
@@ -1,6 +0,0 @@
1
- class Transient < ActiveRecord::Base
2
- def aasm_write_state_without_persistence(state)
3
- "fum"
4
- end
5
- include AASM
6
- end
@@ -1,39 +0,0 @@
1
- class WithEnum < ActiveRecord::Base
2
- include AASM
3
-
4
- # Fake this column for testing purposes
5
- attr_accessor :aasm_state
6
-
7
- def self.test
8
- {}
9
- end
10
-
11
- aasm :enum => :test do
12
- state :opened
13
- state :closed
14
-
15
- event :view do
16
- transitions :to => :read, :from => [:needs_attention]
17
- end
18
- end
19
- end
20
-
21
- class MultipleWithEnum < ActiveRecord::Base
22
- include AASM
23
-
24
- # Fake this column for testing purposes
25
- attr_accessor :aasm_state
26
-
27
- def self.test
28
- {}
29
- end
30
-
31
- aasm :left, :enum => :test do
32
- state :opened
33
- state :closed
34
-
35
- event :view do
36
- transitions :to => :read, :from => [:needs_attention]
37
- end
38
- end
39
- end
@@ -1,31 +0,0 @@
1
- class WithFalseEnum < ActiveRecord::Base
2
- include AASM
3
-
4
- # Fake this column for testing purposes
5
- attr_accessor :aasm_state
6
-
7
- aasm :enum => false do
8
- state :opened
9
- state :closed
10
-
11
- event :view do
12
- transitions :to => :read, :from => [:needs_attention]
13
- end
14
- end
15
- end
16
-
17
- class MultipleWithFalseEnum < ActiveRecord::Base
18
- include AASM
19
-
20
- # Fake this column for testing purposes
21
- attr_accessor :aasm_state
22
-
23
- aasm :left, :enum => false do
24
- state :opened
25
- state :closed
26
-
27
- event :view do
28
- transitions :to => :read, :from => [:needs_attention]
29
- end
30
- end
31
- end
@@ -1,39 +0,0 @@
1
- class WithTrueEnum < ActiveRecord::Base
2
- include AASM
3
-
4
- # Fake this column for testing purposes
5
- attr_accessor :aasm_state
6
-
7
- def value
8
- 'value'
9
- end
10
-
11
- aasm :enum => true do
12
- state :opened
13
- state :closed
14
-
15
- event :view do
16
- transitions :to => :read, :from => [:needs_attention]
17
- end
18
- end
19
- end
20
-
21
- class MultipleWithTrueEnum < ActiveRecord::Base
22
- include AASM
23
-
24
- # Fake this column for testing purposes
25
- attr_accessor :aasm_state
26
-
27
- def value
28
- 'value'
29
- end
30
-
31
- aasm :left, :enum => true do
32
- state :opened
33
- state :closed
34
-
35
- event :view do
36
- transitions :to => :read, :from => [:needs_attention]
37
- end
38
- end
39
- end
@@ -1,6 +0,0 @@
1
- class Writer < ActiveRecord::Base
2
- def aasm_write_state(state)
3
- "fo"
4
- end
5
- include AASM
6
- end
@@ -1,25 +0,0 @@
1
- class BasicTwoStateMachinesExample
2
- include AASM
3
-
4
- aasm :search do
5
- state :initialised, :initial => true
6
- state :queried
7
- state :requested
8
-
9
- event :query do
10
- transitions :from => [:initialised, :requested], :to => :queried
11
- end
12
- event :request do
13
- transitions :from => :queried, :to => :requested
14
- end
15
- end
16
-
17
- aasm :sync do
18
- state :unsynced, :initial => true
19
- state :synced
20
-
21
- event :sync do
22
- transitions :from => :unsynced, :to => :synced
23
- end
24
- end
25
- end
@@ -1,78 +0,0 @@
1
- module Callbacks
2
- class Basic
3
- include AASM
4
-
5
- def initialize(options={})
6
- @fail_event_guard = options[:fail_event_guard]
7
- @fail_transition_guard = options[:fail_transition_guard]
8
- @log = options[:log]
9
- reset_data
10
- end
11
-
12
- def reset_data
13
- @data = []
14
- end
15
-
16
- def data
17
- @data.join(' ')
18
- end
19
-
20
- aasm do
21
- after_all_transitions :after_all_transitions
22
-
23
- state :open, :initial => true,
24
- :before_enter => :before_enter_open,
25
- :enter => :enter_open,
26
- :after_enter => :after_enter_open,
27
- :before_exit => :before_exit_open,
28
- :exit => :exit_open,
29
- :after_exit => :after_exit_open
30
-
31
- state :closed,
32
- :before_enter => :before_enter_closed,
33
- :enter => :enter_closed,
34
- :after_enter => :after_enter_closed,
35
- :before_exit => :before_exit_closed,
36
- :exit => :exit_closed,
37
- :after_exit => :after_exit_closed
38
-
39
- event :close, :before => :before_event, :after => :after_event, :guard => :event_guard do
40
- transitions :to => :closed, :from => [:open], :guard => :transition_guard, :after => :after_transition
41
- end
42
-
43
- event :open, :before => :before_event, :after => :after_event do
44
- transitions :to => :open, :from => :closed
45
- end
46
- end
47
-
48
- def log(text)
49
- @data << text
50
- puts text if @log
51
- end
52
-
53
- def aasm_write_state(*args); log('aasm_write_state'); true; end
54
-
55
- def before_enter_open; log('before_enter_open'); end
56
- def enter_open; log('enter_open'); end
57
- def before_exit_open; log('before_exit_open'); end
58
- def after_enter_open; log('after_enter_open'); end
59
- def exit_open; log('exit_open'); end
60
- def after_exit_open; log('after_exit_open'); end
61
-
62
- def before_enter_closed; log('before_enter_closed'); end
63
- def enter_closed; log('enter_closed'); end
64
- def before_exit_closed; log('before_exit_closed'); end
65
- def exit_closed; log('exit_closed'); end
66
- def after_enter_closed; log('after_enter_closed'); end
67
- def after_exit_closed; log('after_exit_closed'); end
68
-
69
- def event_guard; log('event_guard'); !@fail_event_guard; end
70
- def transition_guard; log('transition_guard'); !@fail_transition_guard; end
71
-
72
- def after_transition; log('after_transition'); end
73
- def after_all_transitions;log('after_all_transitions');end
74
-
75
- def before_event; log('before_event'); end
76
- def after_event; log('after_event'); end
77
- end
78
- end
@@ -1,75 +0,0 @@
1
- module Callbacks
2
- class BasicMultiple
3
- include AASM
4
-
5
- def initialize(options={})
6
- @fail_event_guard = options[:fail_event_guard]
7
- @fail_transition_guard = options[:fail_transition_guard]
8
- @log = options[:log]
9
- reset_data
10
- end
11
-
12
- def reset_data
13
- @data = []
14
- end
15
-
16
- def data
17
- @data.join(' ')
18
- end
19
-
20
- aasm(:left) do
21
- state :open, :initial => true,
22
- :before_enter => :before_enter_open,
23
- :enter => :enter_open,
24
- :after_enter => :after_enter_open,
25
- :before_exit => :before_exit_open,
26
- :exit => :exit_open,
27
- :after_exit => :after_exit_open
28
-
29
- state :closed,
30
- :before_enter => :before_enter_closed,
31
- :enter => :enter_closed,
32
- :after_enter => :after_enter_closed,
33
- :before_exit => :before_exit_closed,
34
- :exit => :exit_closed,
35
- :after_exit => :after_exit_closed
36
-
37
- event :left_close, :before => :before_event, :after => :after_event, :guard => :event_guard do
38
- transitions :to => :closed, :from => [:open], :guard => :transition_guard, :after => :after_transition
39
- end
40
-
41
- event :left_open, :before => :before_event, :after => :after_event do
42
- transitions :to => :open, :from => :closed
43
- end
44
- end
45
-
46
- def log(text)
47
- @data << text
48
- puts text if @log
49
- end
50
-
51
- def aasm_write_state(*args); log("aasm_write_state(#{args.inspect})"); true; end
52
-
53
- def before_enter_open; log('before_enter_open'); end
54
- def enter_open; log('enter_open'); end
55
- def before_exit_open; log('before_exit_open'); end
56
- def after_enter_open; log('after_enter_open'); end
57
- def exit_open; log('exit_open'); end
58
- def after_exit_open; log('after_exit_open'); end
59
-
60
- def before_enter_closed; log('before_enter_closed'); end
61
- def enter_closed; log('enter_closed'); end
62
- def before_exit_closed; log('before_exit_closed'); end
63
- def exit_closed; log('exit_closed'); end
64
- def after_enter_closed; log('after_enter_closed'); end
65
- def after_exit_closed; log('after_exit_closed'); end
66
-
67
- def event_guard; log('event_guard'); !@fail_event_guard; end
68
- def transition_guard; log('transition_guard'); !@fail_transition_guard; end
69
-
70
- def after_transition; log('after_transition'); end
71
-
72
- def before_event; log('before_event'); end
73
- def after_event; log('after_event'); end
74
- end
75
- end
@@ -1,66 +0,0 @@
1
- module Callbacks
2
- class GuardWithinBlock
3
- include AASM
4
-
5
- def initialize(options={})
6
- @fail_event_guard = options[:fail_event_guard]
7
- @fail_transition_guard = options[:fail_transition_guard]
8
- @log = options[:log]
9
- end
10
-
11
- aasm do
12
- state :open, :initial => true,
13
- :before_enter => :before_enter_open,
14
- :enter => :enter_open,
15
- :after_enter => :after_enter_open,
16
- :before_exit => :before_exit_open,
17
- :exit => :exit_open,
18
- :after_exit => :after_exit_open
19
-
20
- state :closed,
21
- :before_enter => :before_enter_closed,
22
- :enter => :enter_closed,
23
- :after_enter => :after_enter_closed,
24
- :before_exit => :before_exit_closed,
25
- :exit => :exit_closed,
26
- :after_exit => :after_exit_closed
27
-
28
- event :close, :before => :before, :after => :after, :guard => :event_guard do
29
- transitions :to => :closed, :from => [:open], :after => :transitioning do
30
- guard do
31
- transition_guard
32
- end
33
- end
34
- end
35
-
36
- event :open, :before => :before, :after => :after do
37
- transitions :to => :open, :from => :closed
38
- end
39
- end
40
-
41
- def log(text)
42
- puts text if @log
43
- end
44
-
45
- def before_enter_open; log('before_enter_open'); end
46
- def enter_open; log('enter_open'); end
47
- def before_exit_open; log('before_exit_open'); end
48
- def after_enter_open; log('after_enter_open'); end
49
- def exit_open; log('exit_open'); end
50
- def after_exit_open; log('after_exit_open'); end
51
-
52
- def before_enter_closed; log('before_enter_closed'); end
53
- def enter_closed; log('enter_closed'); end
54
- def before_exit_closed; log('before_exit_closed'); end
55
- def exit_closed; log('exit_closed'); end
56
- def after_enter_closed; log('after_enter_closed'); end
57
- def after_exit_closed; log('after_exit_closed'); end
58
-
59
- def event_guard; log('event_guard'); !@fail_event_guard; end
60
- def transition_guard; log('transition_guard'); !@fail_transition_guard; end
61
- def transitioning; log('transitioning'); end
62
-
63
- def before; log('before'); end
64
- def after; log('after'); end
65
- end
66
- end
@@ -1,66 +0,0 @@
1
- module Callbacks
2
- class GuardWithinBlockMultiple
3
- include AASM
4
-
5
- def initialize(options={})
6
- @fail_event_guard = options[:fail_event_guard]
7
- @fail_transition_guard = options[:fail_transition_guard]
8
- @log = options[:log]
9
- end
10
-
11
- aasm(:left) do
12
- state :open, :initial => true,
13
- :before_enter => :before_enter_open,
14
- :enter => :enter_open,
15
- :after_enter => :after_enter_open,
16
- :before_exit => :before_exit_open,
17
- :exit => :exit_open,
18
- :after_exit => :after_exit_open
19
-
20
- state :closed,
21
- :before_enter => :before_enter_closed,
22
- :enter => :enter_closed,
23
- :after_enter => :after_enter_closed,
24
- :before_exit => :before_exit_closed,
25
- :exit => :exit_closed,
26
- :after_exit => :after_exit_closed
27
-
28
- event :close, :before => :before, :after => :after, :guard => :event_guard do
29
- transitions :to => :closed, :from => [:open], :after => :transitioning do
30
- guard do
31
- transition_guard
32
- end
33
- end
34
- end
35
-
36
- event :open, :before => :before, :after => :after do
37
- transitions :to => :open, :from => :closed
38
- end
39
- end
40
-
41
- def log(text)
42
- puts text if @log
43
- end
44
-
45
- def before_enter_open; log('before_enter_open'); end
46
- def enter_open; log('enter_open'); end
47
- def before_exit_open; log('before_exit_open'); end
48
- def after_enter_open; log('after_enter_open'); end
49
- def exit_open; log('exit_open'); end
50
- def after_exit_open; log('after_exit_open'); end
51
-
52
- def before_enter_closed; log('before_enter_closed'); end
53
- def enter_closed; log('enter_closed'); end
54
- def before_exit_closed; log('before_exit_closed'); end
55
- def exit_closed; log('exit_closed'); end
56
- def after_enter_closed; log('after_enter_closed'); end
57
- def after_exit_closed; log('after_exit_closed'); end
58
-
59
- def event_guard; log('event_guard'); !@fail_event_guard; end
60
- def transition_guard; log('transition_guard'); !@fail_transition_guard; end
61
- def transitioning; log('transitioning'); end
62
-
63
- def before; log('before'); end
64
- def after; log('after'); end
65
- end
66
- end
@@ -1,65 +0,0 @@
1
- module Callbacks
2
- class MultipleTransitionsTransitionGuard
3
- include AASM
4
-
5
- def initialize(options={})
6
- @fail_event_guard = options[:fail_event_guard]
7
- @fail_transition_guard = options[:fail_transition_guard]
8
- @log = options[:log]
9
- end
10
-
11
- aasm do
12
- state :open, :initial => true,
13
- :before_enter => :before_enter_open,
14
- :enter => :enter_open,
15
- :after_enter => :after_enter_open,
16
- :before_exit => :before_exit_open,
17
- :exit => :exit_open,
18
- :after_exit => :after_exit_open
19
-
20
- state :closed,
21
- :before_enter => :before_enter_closed,
22
- :enter => :enter_closed,
23
- :after_enter => :after_enter_closed,
24
- :before_exit => :before_exit_closed,
25
- :exit => :exit_closed,
26
- :after_exit => :after_exit_closed
27
-
28
- state :failed
29
-
30
- event :close, :before => :before, :after => :after, :guard => :event_guard do
31
- transitions :to => :closed, :from => [:open], :guard => :transition_guard, :after => :transitioning
32
- transitions :to => :failed, :from => [:open]
33
- end
34
-
35
- event :open, :before => :before, :after => :after do
36
- transitions :to => :open, :from => :closed
37
- end
38
- end
39
-
40
- def log(text)
41
- puts text if @log
42
- end
43
-
44
- def before_enter_open; log('before_enter_open'); end
45
- def enter_open; log('enter_open'); end
46
- def before_exit_open; log('before_exit_open'); end
47
- def after_enter_open; log('after_enter_open'); end
48
- def exit_open; log('exit_open'); end
49
- def after_exit_open; log('after_exit_open'); end
50
-
51
- def before_enter_closed; log('before_enter_closed'); end
52
- def enter_closed; log('enter_closed'); end
53
- def before_exit_closed; log('before_exit_closed'); end
54
- def exit_closed; log('exit_closed'); end
55
- def after_enter_closed; log('after_enter_closed'); end
56
- def after_exit_closed; log('after_exit_closed'); end
57
-
58
- def event_guard; log('event_guard'); !@fail_event_guard; end
59
- def transition_guard; log('transition_guard'); !@fail_transition_guard; end
60
- def transitioning; log('transitioning'); end
61
-
62
- def before; log('before'); end
63
- def after; log('after'); end
64
- end
65
- end
@@ -1,65 +0,0 @@
1
- module Callbacks
2
- class MultipleTransitionsTransitionGuardMultiple
3
- include AASM
4
-
5
- def initialize(options={})
6
- @fail_event_guard = options[:fail_event_guard]
7
- @fail_transition_guard = options[:fail_transition_guard]
8
- @log = options[:log]
9
- end
10
-
11
- aasm(:left) do
12
- state :open, :initial => true,
13
- :before_enter => :before_enter_open,
14
- :enter => :enter_open,
15
- :after_enter => :after_enter_open,
16
- :before_exit => :before_exit_open,
17
- :exit => :exit_open,
18
- :after_exit => :after_exit_open
19
-
20
- state :closed,
21
- :before_enter => :before_enter_closed,
22
- :enter => :enter_closed,
23
- :after_enter => :after_enter_closed,
24
- :before_exit => :before_exit_closed,
25
- :exit => :exit_closed,
26
- :after_exit => :after_exit_closed
27
-
28
- state :failed
29
-
30
- event :close, :before => :before, :after => :after, :guard => :event_guard do
31
- transitions :to => :closed, :from => [:open], :guard => :transition_guard, :after => :transitioning
32
- transitions :to => :failed, :from => [:open]
33
- end
34
-
35
- event :open, :before => :before, :after => :after do
36
- transitions :to => :open, :from => :closed
37
- end
38
- end
39
-
40
- def log(text)
41
- puts text if @log
42
- end
43
-
44
- def before_enter_open; log('before_enter_open'); end
45
- def enter_open; log('enter_open'); end
46
- def before_exit_open; log('before_exit_open'); end
47
- def after_enter_open; log('after_enter_open'); end
48
- def exit_open; log('exit_open'); end
49
- def after_exit_open; log('after_exit_open'); end
50
-
51
- def before_enter_closed; log('before_enter_closed'); end
52
- def enter_closed; log('enter_closed'); end
53
- def before_exit_closed; log('before_exit_closed'); end
54
- def exit_closed; log('exit_closed'); end
55
- def after_enter_closed; log('after_enter_closed'); end
56
- def after_exit_closed; log('after_exit_closed'); end
57
-
58
- def event_guard; log('event_guard'); !@fail_event_guard; end
59
- def transition_guard; log('transition_guard'); !@fail_transition_guard; end
60
- def transitioning; log('transitioning'); end
61
-
62
- def before; log('before'); end
63
- def after; log('after'); end
64
- end
65
- end
@@ -1,44 +0,0 @@
1
- module Callbacks
2
- class PrivateMethod
3
- include AASM
4
-
5
- def initialize(options={})
6
- @fail_event_guard = options[:fail_event_guard]
7
- @fail_transition_guard = options[:fail_transition_guard]
8
- @log = options[:log]
9
- reset_data
10
- end
11
-
12
- def reset_data
13
- @data = []
14
- end
15
-
16
- def data
17
- @data.join(' ')
18
- end
19
-
20
- aasm do
21
- state :open, :initial => true
22
- state :closed
23
-
24
- event :close, :after => :after_event do
25
- transitions :to => :closed, :from => [:open]
26
- end
27
-
28
- event :open, :after => :after_event do
29
- transitions :to => :open, :from => :closed
30
- end
31
- end
32
-
33
- def log(text)
34
- @data << text
35
- puts text if @log
36
- end
37
-
38
- def aasm_write_state(*args); log('aasm_write_state'); true; end
39
-
40
- private
41
-
42
- def after_event; log('after_event'); end
43
- end
44
- end
@@ -1,44 +0,0 @@
1
- module Callbacks
2
- class PrivateMethodMultiple
3
- include AASM
4
-
5
- def initialize(options={})
6
- @fail_event_guard = options[:fail_event_guard]
7
- @fail_transition_guard = options[:fail_transition_guard]
8
- @log = options[:log]
9
- reset_data
10
- end
11
-
12
- def reset_data
13
- @data = []
14
- end
15
-
16
- def data
17
- @data.join(' ')
18
- end
19
-
20
- aasm(:left) do
21
- state :open, :initial => true
22
- state :closed
23
-
24
- event :close, :after => :after_event do
25
- transitions :to => :closed, :from => [:open]
26
- end
27
-
28
- event :open, :after => :after_event do
29
- transitions :to => :open, :from => :closed
30
- end
31
- end
32
-
33
- def log(text)
34
- @data << text
35
- puts text if @log
36
- end
37
-
38
- def aasm_write_state(*args); log('aasm_write_state'); true; end
39
-
40
- private
41
-
42
- def after_event; log('after_event'); end
43
- end
44
- end