aasm 4.11.0 → 4.12.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 (91) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +16 -17
  3. data/Appraisals +44 -0
  4. data/CHANGELOG.md +24 -1
  5. data/CONTRIBUTING.md +24 -0
  6. data/Gemfile +4 -21
  7. data/README.md +81 -34
  8. data/Rakefile +6 -1
  9. data/TESTING.md +25 -0
  10. data/aasm.gemspec +5 -2
  11. data/gemfiles/rails_3.2.gemfile +13 -0
  12. data/gemfiles/rails_4.0.gemfile +8 -9
  13. data/gemfiles/rails_4.2.gemfile +9 -9
  14. data/gemfiles/rails_4.2_mongoid_5.gemfile +5 -9
  15. data/gemfiles/rails_5.0.gemfile +7 -16
  16. data/lib/aasm/aasm.rb +9 -3
  17. data/lib/aasm/base.rb +3 -1
  18. data/lib/aasm/configuration.rb +4 -0
  19. data/lib/aasm/core/event.rb +19 -9
  20. data/lib/aasm/core/state.rb +7 -0
  21. data/lib/aasm/core/transition.rb +9 -0
  22. data/lib/aasm/instance_base.rb +8 -8
  23. data/lib/aasm/persistence/active_record_persistence.rb +1 -1
  24. data/lib/aasm/persistence/base.rb +3 -3
  25. data/lib/aasm/persistence/mongoid_persistence.rb +48 -9
  26. data/lib/aasm/persistence.rb +0 -3
  27. data/lib/aasm/state_machine.rb +4 -2
  28. data/lib/aasm/state_machine_store.rb +5 -2
  29. data/lib/aasm/version.rb +1 -1
  30. data/lib/generators/active_record/aasm_generator.rb +1 -1
  31. data/lib/motion-aasm.rb +0 -1
  32. data/spec/en.yml +3 -0
  33. data/spec/generators/active_record_generator_spec.rb +42 -34
  34. data/spec/generators/mongoid_generator_spec.rb +4 -6
  35. data/spec/models/{invalid_persistor.rb → active_record/invalid_persistor.rb} +0 -2
  36. data/spec/models/{silent_persistor.rb → active_record/silent_persistor.rb} +0 -2
  37. data/spec/models/active_record/simple_new_dsl.rb +2 -2
  38. data/spec/models/{transactor.rb → active_record/transactor.rb} +0 -2
  39. data/spec/models/{validator.rb → active_record/validator.rb} +6 -3
  40. data/spec/models/callbacks/basic.rb +5 -2
  41. data/spec/models/guard_with_params.rb +24 -0
  42. data/spec/models/guard_with_params_multiple.rb +18 -0
  43. data/spec/models/mongoid/invalid_persistor_mongoid.rb +39 -0
  44. data/spec/models/mongoid/silent_persistor_mongoid.rb +39 -0
  45. data/spec/models/mongoid/simple_mongoid.rb +2 -2
  46. data/spec/models/mongoid/validator_mongoid.rb +100 -0
  47. data/spec/models/multi_transitioner.rb +10 -0
  48. data/spec/models/multiple_transitions_that_differ_only_by_guard.rb +31 -0
  49. data/spec/models/parametrised_event.rb +7 -0
  50. data/spec/models/simple_multiple_example.rb +12 -0
  51. data/spec/models/sub_class.rb +34 -0
  52. data/spec/spec_helper.rb +0 -33
  53. data/spec/spec_helpers/active_record.rb +7 -0
  54. data/spec/spec_helpers/dynamoid.rb +33 -0
  55. data/spec/spec_helpers/mongoid.rb +7 -0
  56. data/spec/spec_helpers/redis.rb +7 -0
  57. data/spec/spec_helpers/remove_warnings.rb +1 -0
  58. data/spec/spec_helpers/sequel.rb +7 -0
  59. data/spec/unit/api_spec.rb +76 -73
  60. data/spec/unit/callbacks_spec.rb +5 -0
  61. data/spec/unit/event_spec.rb +12 -0
  62. data/spec/unit/guard_with_params_multiple_spec.rb +10 -0
  63. data/spec/unit/guard_with_params_spec.rb +14 -0
  64. data/spec/unit/inspection_spec.rb +5 -0
  65. data/spec/unit/localizer_spec.rb +55 -53
  66. data/spec/unit/multiple_transitions_that_differ_only_by_guard_spec.rb +14 -0
  67. data/spec/unit/override_warning_spec.rb +8 -0
  68. data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +452 -445
  69. data/spec/unit/persistence/active_record_persistence_spec.rb +523 -490
  70. data/spec/unit/persistence/dynamoid_persistence_multiple_spec.rb +4 -9
  71. data/spec/unit/persistence/dynamoid_persistence_spec.rb +4 -9
  72. data/spec/unit/persistence/mongoid_persistence_multiple_spec.rb +87 -10
  73. data/spec/unit/persistence/mongoid_persistence_spec.rb +89 -10
  74. data/spec/unit/persistence/redis_persistence_spec.rb +3 -7
  75. data/spec/unit/persistence/sequel_persistence_multiple_spec.rb +4 -9
  76. data/spec/unit/persistence/sequel_persistence_spec.rb +4 -9
  77. data/spec/unit/simple_multiple_example_spec.rb +28 -0
  78. data/spec/unit/subclassing_multiple_spec.rb +37 -2
  79. data/spec/unit/subclassing_spec.rb +17 -2
  80. metadata +77 -32
  81. data/gemfiles/rails_3.2_stable.gemfile +0 -15
  82. data/gemfiles/rails_4.0_mongo_mapper.gemfile +0 -17
  83. data/gemfiles/rails_4.2_mongo_mapper.gemfile +0 -18
  84. data/lib/aasm/persistence/mongo_mapper_persistence.rb +0 -163
  85. data/spec/models/mongo_mapper/complex_mongo_mapper_example.rb +0 -37
  86. data/spec/models/mongo_mapper/no_scope_mongo_mapper.rb +0 -21
  87. data/spec/models/mongo_mapper/simple_mongo_mapper.rb +0 -23
  88. data/spec/models/mongo_mapper/simple_new_dsl_mongo_mapper.rb +0 -25
  89. data/spec/unit/persistence/mongo_mapper_persistence_multiple_spec.rb +0 -146
  90. data/spec/unit/persistence/mongo_mapper_persistence_spec.rb +0 -93
  91. /data/spec/models/{worker.rb → active_record/worker.rb} +0 -0
metadata CHANGED
@@ -1,17 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aasm
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.11.0
4
+ version: 4.12.0
5
5
  platform: ruby
6
6
  authors:
7
- - Scott Barron
8
- - Travis Tilley
9
7
  - Thorsten Boettger
8
+ - Anil Maurya
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2016-06-19 00:00:00.000000000 Z
12
+ date: 2017-03-21 00:00:00.000000000 Z
14
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: concurrent-ruby
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1.0'
15
28
  - !ruby/object:Gem::Dependency
16
29
  name: rake
17
30
  requirement: !ruby/object:Gem::Requirement
@@ -68,6 +81,20 @@ dependencies:
68
81
  - - ">="
69
82
  - !ruby/object:Gem::Version
70
83
  version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: appraisal
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
71
98
  - !ruby/object:Gem::Dependency
72
99
  name: pry
73
100
  requirement: !ruby/object:Gem::Requirement
@@ -84,7 +111,7 @@ dependencies:
84
111
  version: '0'
85
112
  description: AASM is a continuation of the acts-as-state-machine rails plugin, built
86
113
  for plain Ruby objects.
87
- email: scott@elitists.net, ttilley@gmail.com, aasm@mt7.de
114
+ email: aasm@mt7.de, anilmaurya8dec@gmail.com
88
115
  executables: []
89
116
  extensions: []
90
117
  extra_rdoc_files: []
@@ -93,8 +120,10 @@ files:
93
120
  - ".gitignore"
94
121
  - ".travis.yml"
95
122
  - API
123
+ - Appraisals
96
124
  - CHANGELOG.md
97
125
  - CODE_OF_CONDUCT.md
126
+ - CONTRIBUTING.md
98
127
  - Gemfile
99
128
  - HOWTO
100
129
  - LICENSE
@@ -102,13 +131,12 @@ files:
102
131
  - README.md
103
132
  - README_FROM_VERSION_3_TO_4.md
104
133
  - Rakefile
134
+ - TESTING.md
105
135
  - aasm.gemspec
106
136
  - callbacks.txt
107
- - gemfiles/rails_3.2_stable.gemfile
137
+ - gemfiles/rails_3.2.gemfile
108
138
  - gemfiles/rails_4.0.gemfile
109
- - gemfiles/rails_4.0_mongo_mapper.gemfile
110
139
  - gemfiles/rails_4.2.gemfile
111
- - gemfiles/rails_4.2_mongo_mapper.gemfile
112
140
  - gemfiles/rails_4.2_mongoid_5.gemfile
113
141
  - gemfiles/rails_5.0.gemfile
114
142
  - lib/aasm.rb
@@ -127,7 +155,6 @@ files:
127
155
  - lib/aasm/persistence/base.rb
128
156
  - lib/aasm/persistence/core_data_query_persistence.rb
129
157
  - lib/aasm/persistence/dynamoid_persistence.rb
130
- - lib/aasm/persistence/mongo_mapper_persistence.rb
131
158
  - lib/aasm/persistence/mongoid_persistence.rb
132
159
  - lib/aasm/persistence/plain_persistence.rb
133
160
  - lib/aasm/persistence/redis_persistence.rb
@@ -158,6 +185,7 @@ files:
158
185
  - spec/models/active_record/derivate_new_dsl.rb
159
186
  - spec/models/active_record/false_state.rb
160
187
  - spec/models/active_record/gate.rb
188
+ - spec/models/active_record/invalid_persistor.rb
161
189
  - spec/models/active_record/localizer_test_model.rb
162
190
  - spec/models/active_record/no_direct_assignment.rb
163
191
  - spec/models/active_record/no_scope.rb
@@ -165,13 +193,17 @@ files:
165
193
  - spec/models/active_record/provided_and_persisted_state.rb
166
194
  - spec/models/active_record/reader.rb
167
195
  - spec/models/active_record/readme_job.rb
196
+ - spec/models/active_record/silent_persistor.rb
168
197
  - spec/models/active_record/simple_new_dsl.rb
169
198
  - spec/models/active_record/thief.rb
199
+ - spec/models/active_record/transactor.rb
170
200
  - spec/models/active_record/transient.rb
201
+ - spec/models/active_record/validator.rb
171
202
  - spec/models/active_record/with_enum.rb
172
203
  - spec/models/active_record/with_enum_without_column.rb
173
204
  - spec/models/active_record/with_false_enum.rb
174
205
  - spec/models/active_record/with_true_enum.rb
206
+ - spec/models/active_record/worker.rb
175
207
  - spec/models/active_record/writer.rb
176
208
  - spec/models/basic_two_state_machines_example.rb
177
209
  - spec/models/callbacks/basic.rb
@@ -195,20 +227,21 @@ files:
195
227
  - spec/models/dynamoid/dynamoid_simple.rb
196
228
  - spec/models/foo.rb
197
229
  - spec/models/foo_callback_multiple.rb
230
+ - spec/models/guard_with_params.rb
231
+ - spec/models/guard_with_params_multiple.rb
198
232
  - spec/models/guardian.rb
199
233
  - spec/models/guardian_multiple.rb
200
234
  - spec/models/initial_state_proc.rb
201
- - spec/models/invalid_persistor.rb
202
- - spec/models/mongo_mapper/complex_mongo_mapper_example.rb
203
- - spec/models/mongo_mapper/no_scope_mongo_mapper.rb
204
- - spec/models/mongo_mapper/simple_mongo_mapper.rb
205
- - spec/models/mongo_mapper/simple_new_dsl_mongo_mapper.rb
206
235
  - spec/models/mongoid/complex_mongoid_example.rb
236
+ - spec/models/mongoid/invalid_persistor_mongoid.rb
207
237
  - spec/models/mongoid/mongoid_relationships.rb
208
238
  - spec/models/mongoid/no_scope_mongoid.rb
239
+ - spec/models/mongoid/silent_persistor_mongoid.rb
209
240
  - spec/models/mongoid/simple_mongoid.rb
210
241
  - spec/models/mongoid/simple_new_dsl_mongoid.rb
242
+ - spec/models/mongoid/validator_mongoid.rb
211
243
  - spec/models/multi_transitioner.rb
244
+ - spec/models/multiple_transitions_that_differ_only_by_guard.rb
212
245
  - spec/models/namespaced_multiple_example.rb
213
246
  - spec/models/no_initial_state.rb
214
247
  - spec/models/not_auto_loaded/process.rb
@@ -220,7 +253,6 @@ files:
220
253
  - spec/models/sequel/sequel_multiple.rb
221
254
  - spec/models/sequel/sequel_simple.rb
222
255
  - spec/models/silencer.rb
223
- - spec/models/silent_persistor.rb
224
256
  - spec/models/simple_custom_example.rb
225
257
  - spec/models/simple_example.rb
226
258
  - spec/models/simple_multiple_example.rb
@@ -231,11 +263,14 @@ files:
231
263
  - spec/models/sub_classing.rb
232
264
  - spec/models/super_class.rb
233
265
  - spec/models/this_name_better_not_be_in_use.rb
234
- - spec/models/transactor.rb
235
266
  - spec/models/valid_state_name.rb
236
- - spec/models/validator.rb
237
- - spec/models/worker.rb
238
267
  - spec/spec_helper.rb
268
+ - spec/spec_helpers/active_record.rb
269
+ - spec/spec_helpers/dynamoid.rb
270
+ - spec/spec_helpers/mongoid.rb
271
+ - spec/spec_helpers/redis.rb
272
+ - spec/spec_helpers/remove_warnings.rb
273
+ - spec/spec_helpers/sequel.rb
239
274
  - spec/unit/api_spec.rb
240
275
  - spec/unit/basic_two_state_machines_example_spec.rb
241
276
  - spec/unit/callback_multiple_spec.rb
@@ -249,12 +284,15 @@ files:
249
284
  - spec/unit/exception_spec.rb
250
285
  - spec/unit/guard_multiple_spec.rb
251
286
  - spec/unit/guard_spec.rb
287
+ - spec/unit/guard_with_params_multiple_spec.rb
288
+ - spec/unit/guard_with_params_spec.rb
252
289
  - spec/unit/initial_state_multiple_spec.rb
253
290
  - spec/unit/initial_state_spec.rb
254
291
  - spec/unit/inspection_multiple_spec.rb
255
292
  - spec/unit/inspection_spec.rb
256
293
  - spec/unit/localizer_spec.rb
257
294
  - spec/unit/memory_leak_spec.rb
295
+ - spec/unit/multiple_transitions_that_differ_only_by_guard_spec.rb
258
296
  - spec/unit/namespaced_multiple_example_spec.rb
259
297
  - spec/unit/new_dsl_spec.rb
260
298
  - spec/unit/override_warning_spec.rb
@@ -262,8 +300,6 @@ files:
262
300
  - spec/unit/persistence/active_record_persistence_spec.rb
263
301
  - spec/unit/persistence/dynamoid_persistence_multiple_spec.rb
264
302
  - spec/unit/persistence/dynamoid_persistence_spec.rb
265
- - spec/unit/persistence/mongo_mapper_persistence_multiple_spec.rb
266
- - spec/unit/persistence/mongo_mapper_persistence_spec.rb
267
303
  - spec/unit/persistence/mongoid_persistence_multiple_spec.rb
268
304
  - spec/unit/persistence/mongoid_persistence_spec.rb
269
305
  - spec/unit/persistence/redis_persistence_spec.rb
@@ -300,7 +336,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
300
336
  version: '0'
301
337
  requirements: []
302
338
  rubyforge_project:
303
- rubygems_version: 2.4.5
339
+ rubygems_version: 2.5.1
304
340
  signing_key:
305
341
  specification_version: 4
306
342
  summary: State machine mixin for Ruby objects
@@ -316,6 +352,7 @@ test_files:
316
352
  - spec/models/active_record/derivate_new_dsl.rb
317
353
  - spec/models/active_record/false_state.rb
318
354
  - spec/models/active_record/gate.rb
355
+ - spec/models/active_record/invalid_persistor.rb
319
356
  - spec/models/active_record/localizer_test_model.rb
320
357
  - spec/models/active_record/no_direct_assignment.rb
321
358
  - spec/models/active_record/no_scope.rb
@@ -323,13 +360,17 @@ test_files:
323
360
  - spec/models/active_record/provided_and_persisted_state.rb
324
361
  - spec/models/active_record/reader.rb
325
362
  - spec/models/active_record/readme_job.rb
363
+ - spec/models/active_record/silent_persistor.rb
326
364
  - spec/models/active_record/simple_new_dsl.rb
327
365
  - spec/models/active_record/thief.rb
366
+ - spec/models/active_record/transactor.rb
328
367
  - spec/models/active_record/transient.rb
368
+ - spec/models/active_record/validator.rb
329
369
  - spec/models/active_record/with_enum.rb
330
370
  - spec/models/active_record/with_enum_without_column.rb
331
371
  - spec/models/active_record/with_false_enum.rb
332
372
  - spec/models/active_record/with_true_enum.rb
373
+ - spec/models/active_record/worker.rb
333
374
  - spec/models/active_record/writer.rb
334
375
  - spec/models/basic_two_state_machines_example.rb
335
376
  - spec/models/callbacks/basic.rb
@@ -353,20 +394,21 @@ test_files:
353
394
  - spec/models/dynamoid/dynamoid_simple.rb
354
395
  - spec/models/foo.rb
355
396
  - spec/models/foo_callback_multiple.rb
397
+ - spec/models/guard_with_params.rb
398
+ - spec/models/guard_with_params_multiple.rb
356
399
  - spec/models/guardian.rb
357
400
  - spec/models/guardian_multiple.rb
358
401
  - spec/models/initial_state_proc.rb
359
- - spec/models/invalid_persistor.rb
360
- - spec/models/mongo_mapper/complex_mongo_mapper_example.rb
361
- - spec/models/mongo_mapper/no_scope_mongo_mapper.rb
362
- - spec/models/mongo_mapper/simple_mongo_mapper.rb
363
- - spec/models/mongo_mapper/simple_new_dsl_mongo_mapper.rb
364
402
  - spec/models/mongoid/complex_mongoid_example.rb
403
+ - spec/models/mongoid/invalid_persistor_mongoid.rb
365
404
  - spec/models/mongoid/mongoid_relationships.rb
366
405
  - spec/models/mongoid/no_scope_mongoid.rb
406
+ - spec/models/mongoid/silent_persistor_mongoid.rb
367
407
  - spec/models/mongoid/simple_mongoid.rb
368
408
  - spec/models/mongoid/simple_new_dsl_mongoid.rb
409
+ - spec/models/mongoid/validator_mongoid.rb
369
410
  - spec/models/multi_transitioner.rb
411
+ - spec/models/multiple_transitions_that_differ_only_by_guard.rb
370
412
  - spec/models/namespaced_multiple_example.rb
371
413
  - spec/models/no_initial_state.rb
372
414
  - spec/models/not_auto_loaded/process.rb
@@ -378,7 +420,6 @@ test_files:
378
420
  - spec/models/sequel/sequel_multiple.rb
379
421
  - spec/models/sequel/sequel_simple.rb
380
422
  - spec/models/silencer.rb
381
- - spec/models/silent_persistor.rb
382
423
  - spec/models/simple_custom_example.rb
383
424
  - spec/models/simple_example.rb
384
425
  - spec/models/simple_multiple_example.rb
@@ -389,11 +430,14 @@ test_files:
389
430
  - spec/models/sub_classing.rb
390
431
  - spec/models/super_class.rb
391
432
  - spec/models/this_name_better_not_be_in_use.rb
392
- - spec/models/transactor.rb
393
433
  - spec/models/valid_state_name.rb
394
- - spec/models/validator.rb
395
- - spec/models/worker.rb
396
434
  - spec/spec_helper.rb
435
+ - spec/spec_helpers/active_record.rb
436
+ - spec/spec_helpers/dynamoid.rb
437
+ - spec/spec_helpers/mongoid.rb
438
+ - spec/spec_helpers/redis.rb
439
+ - spec/spec_helpers/remove_warnings.rb
440
+ - spec/spec_helpers/sequel.rb
397
441
  - spec/unit/api_spec.rb
398
442
  - spec/unit/basic_two_state_machines_example_spec.rb
399
443
  - spec/unit/callback_multiple_spec.rb
@@ -407,12 +451,15 @@ test_files:
407
451
  - spec/unit/exception_spec.rb
408
452
  - spec/unit/guard_multiple_spec.rb
409
453
  - spec/unit/guard_spec.rb
454
+ - spec/unit/guard_with_params_multiple_spec.rb
455
+ - spec/unit/guard_with_params_spec.rb
410
456
  - spec/unit/initial_state_multiple_spec.rb
411
457
  - spec/unit/initial_state_spec.rb
412
458
  - spec/unit/inspection_multiple_spec.rb
413
459
  - spec/unit/inspection_spec.rb
414
460
  - spec/unit/localizer_spec.rb
415
461
  - spec/unit/memory_leak_spec.rb
462
+ - spec/unit/multiple_transitions_that_differ_only_by_guard_spec.rb
416
463
  - spec/unit/namespaced_multiple_example_spec.rb
417
464
  - spec/unit/new_dsl_spec.rb
418
465
  - spec/unit/override_warning_spec.rb
@@ -420,8 +467,6 @@ test_files:
420
467
  - spec/unit/persistence/active_record_persistence_spec.rb
421
468
  - spec/unit/persistence/dynamoid_persistence_multiple_spec.rb
422
469
  - spec/unit/persistence/dynamoid_persistence_spec.rb
423
- - spec/unit/persistence/mongo_mapper_persistence_multiple_spec.rb
424
- - spec/unit/persistence/mongo_mapper_persistence_spec.rb
425
470
  - spec/unit/persistence/mongoid_persistence_multiple_spec.rb
426
471
  - spec/unit/persistence/mongoid_persistence_spec.rb
427
472
  - spec/unit/persistence/redis_persistence_spec.rb
@@ -1,15 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "sqlite3", :platforms => :ruby
4
- gem 'rubysl', :platforms => :rbx
5
- gem 'rubinius-developer_tools', :platforms => :rbx
6
- gem "jruby-openssl", :platforms => :jruby
7
- gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
8
- gem "rails", :github => "rails/rails", :branch => "3-2-stable"
9
- gem 'mongoid', '~>3.1' if Gem::Version.create(RUBY_VERSION.dup) >= Gem::Version.create('1.9.3')
10
- gem 'sequel'
11
- gem 'mongo_mapper', '~>0.13'
12
- gem 'bson_ext', :platforms => :ruby
13
- gem 'test-unit', '~> 3.0'
14
-
15
- gemspec :path => "../"
@@ -1,17 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "sqlite3", :platforms => :ruby
4
- gem "coveralls"
5
- gem 'rubysl', :platforms => :rbx
6
- gem 'rubinius-developer_tools', :platforms => :rbx
7
- gem "jruby-openssl", :platforms => :jruby
8
- gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
9
- gem "mime-types", "~> 2" if Gem::Version.create(RUBY_VERSION.dup) <= Gem::Version.create('1.9.3')
10
- gem "rails", "4.0.13"
11
- gem 'sequel'
12
- gem 'mongo_mapper', '~>0.13'
13
- gem 'bson_ext', :platforms => :ruby
14
- gem 'dynamoid', '~> 1', :platforms => :ruby
15
- gem 'aws-sdk', '~>2', :platforms => :ruby
16
-
17
- gemspec :path => "../"
@@ -1,18 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "sqlite3", :platforms => :ruby
4
- gem "coveralls"
5
- gem 'rubysl', :platforms => :rbx
6
- gem 'rubinius-developer_tools', :platforms => :rbx
7
- gem "jruby-openssl", :platforms => :jruby
8
- gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
9
- gem "mime-types", "~> 2" if Gem::Version.create(RUBY_VERSION.dup) <= Gem::Version.create('1.9.3')
10
- gem "rails", "4.2.5"
11
- gem 'sequel'
12
- gem 'mongo_mapper'
13
- gem 'bson_ext', :platforms => :ruby
14
- gem 'dynamoid', '~> 1', :platforms => :ruby
15
- gem 'aws-sdk', '~>2', :platforms => :ruby
16
- gem "redis-objects"
17
-
18
- gemspec :path => "../"
@@ -1,163 +0,0 @@
1
- module AASM
2
- module Persistence
3
- module MongoMapperPersistence
4
- # This method:
5
- #
6
- # * extends the model with ClassMethods
7
- # * includes InstanceMethods
8
- #
9
- # Adds
10
- #
11
- # before_validation :aasm_ensure_initial_state, :on => :create
12
- #
13
- # As a result, it doesn't matter when you define your methods - the following 2 are equivalent
14
- #
15
- # class Foo
16
- # include MongoMapper::Document
17
- # def aasm_write_state(state)
18
- # "bar"
19
- # end
20
- # include AASM
21
- # end
22
- #
23
- # class Foo < ActiveRecord::Base
24
- # include MongoMapper::Document
25
- # include AASM
26
- # def aasm_write_state(state)
27
- # "bar"
28
- # end
29
- # end
30
- #
31
- def self.included(base)
32
- base.send(:include, AASM::Persistence::Base)
33
- base.send(:include, AASM::Persistence::MongoMapperPersistence::InstanceMethods)
34
- base.extend AASM::Persistence::MongoMapperPersistence::ClassMethods
35
-
36
- base.before_create :aasm_ensure_initial_state
37
-
38
- # ensure state is in the list of states
39
- base.validate :aasm_validate_states
40
- end
41
-
42
- module ClassMethods
43
- def aasm_create_scope(state_machine_name, scope_name)
44
- conditions = { aasm(state_machine_name).attribute_name.to_sym => scope_name.to_s }
45
- scope(scope_name, lambda { where(conditions) })
46
- end
47
- end
48
-
49
- module InstanceMethods
50
-
51
- # Writes <tt>state</tt> to the state column and persists it to the database
52
- #
53
- # foo = Foo.find(1)
54
- # foo.aasm.current_state # => :opened
55
- # foo.close!
56
- # foo.aasm.current_state # => :closed
57
- # Foo.find(1).aasm.current_state # => :closed
58
- #
59
- # NOTE: intended to be called from an event
60
- def aasm_write_state(state, name=:default)
61
- old_value = read_attribute(self.class.aasm(name).attribute_name)
62
- write_attribute(self.class.aasm(name).attribute_name, state)
63
-
64
- success = if aasm_skipping_validations(name)
65
- value = aasm_raw_attribute_value(state, name)
66
- self.class.where(self.class.primary_key => self.id).update_all(self.class.aasm(name).attribute_name => value) == 1
67
- else
68
- self.save
69
- end
70
- unless success
71
- write_attribute(self.class.aasm(name).attribute_name, old_value)
72
- return false
73
- end
74
-
75
- true
76
- end
77
-
78
- # Writes <tt>state</tt> to the state column, but does not persist it to the database
79
- #
80
- # foo = Foo.find(1)
81
- # foo.aasm.current_state # => :opened
82
- # foo.close
83
- # foo.aasm.current_state # => :closed
84
- # Foo.find(1).aasm.current_state # => :opened
85
- # foo.save
86
- # foo.aasm.current_state # => :closed
87
- # Foo.find(1).aasm.current_state # => :closed
88
- #
89
- # NOTE: intended to be called from an event
90
- def aasm_write_state_without_persistence(state, name=:default)
91
- aasm_write_attribute(state, name)
92
- end
93
-
94
- private
95
- def aasm_enum(name=:default)
96
- case AASM::StateMachineStore.fetch(self.class, true).machine(name).config.enum
97
- when false then nil
98
- when true then aasm_guess_enum_method(name)
99
- when nil then aasm_guess_enum_method(name) if aasm_column_looks_like_enum(name)
100
- else AASM::StateMachineStore.fetch(self.class, true).machine(name).config.enum
101
- end
102
- end
103
-
104
- def aasm_column_looks_like_enum(name)
105
- self.class.keys[self.class.aasm(name).attribute_name.to_s].type == Integer
106
- end
107
-
108
- def aasm_guess_enum_method(name)
109
- self.class.aasm(name).attribute_name.to_s.pluralize.to_sym
110
- end
111
-
112
- def aasm_skipping_validations(state_machine_name)
113
- AASM::StateMachineStore.fetch(self.class, true).machine(state_machine_name).config.skip_validation_on_save
114
- end
115
-
116
- def aasm_write_attribute(state, name=:default)
117
- write_attribute self.class.aasm(name).attribute_name, aasm_raw_attribute_value(state, name)
118
- end
119
-
120
- def aasm_raw_attribute_value(state, name=:default)
121
- if aasm_enum(name)
122
- self.class.send(aasm_enum(name))[state]
123
- else
124
- state.to_s
125
- end
126
- end
127
-
128
- # Ensures that if the aasm_state column is nil and the record is new
129
- # that the initial state gets populated before validation on create
130
- #
131
- # foo = Foo.new
132
- # foo.aasm_state # => nil
133
- # foo.valid?
134
- # foo.aasm_state # => "open" (where :open is the initial state)
135
- #
136
- #
137
- # foo = Foo.find(:first)
138
- # foo.aasm_state # => 1
139
- # foo.aasm_state = nil
140
- # foo.valid?
141
- # foo.aasm_state # => nil
142
- #
143
- def aasm_ensure_initial_state
144
- AASM::StateMachineStore.fetch(self.class, true).machine_names.each do |state_machine_name|
145
- send("#{self.class.aasm(state_machine_name).attribute_name}=", aasm(state_machine_name).enter_initial_state.to_s) if send(self.class.aasm(state_machine_name).attribute_name).blank?
146
- end
147
- end
148
-
149
- def aasm_validate_states
150
- AASM::StateMachineStore.fetch(self.class, true).machine_names.each do |state_machine_name|
151
- send("#{self.class.aasm(state_machine_name).attribute_name}=", aasm(state_machine_name).enter_initial_state.to_s) if send(self.class.aasm(state_machine_name).attribute_name).blank?
152
- unless AASM::StateMachineStore.fetch(self.class, true).machine(state_machine_name).config.skip_validation_on_save
153
- if aasm(state_machine_name).current_state && !aasm(state_machine_name).states.include?(aasm(state_machine_name).current_state)
154
- self.errors.add(AASM::StateMachineStore.fetch(self.class, true).machine(state_machine_name).config.column , "is invalid")
155
- end
156
- end
157
- end
158
- end
159
- end # InstanceMethods
160
-
161
- end
162
- end # Persistence
163
- end # AASM
@@ -1,37 +0,0 @@
1
- class ComplexMongoMapperExample
2
- include MongoMapper::Document
3
- include AASM
4
-
5
- key :left, String
6
- key :right, String
7
-
8
- aasm :left, :column => 'left' do
9
- state :one, :initial => true
10
- state :two
11
- state :three
12
-
13
- event :increment do
14
- transitions :from => :one, :to => :two
15
- transitions :from => :two, :to => :three
16
- end
17
- event :reset do
18
- transitions :from => :three, :to => :one
19
- end
20
- end
21
-
22
- aasm :right, :column => 'right' do
23
- state :alpha, :initial => true
24
- state :beta
25
- state :gamma
26
-
27
- event :level_up do
28
- transitions :from => :alpha, :to => :beta
29
- transitions :from => :beta, :to => :gamma
30
- end
31
- event :level_down do
32
- transitions :from => :gamma, :to => :beta
33
- transitions :from => :beta, :to => :alpha
34
- end
35
- end
36
-
37
- end
@@ -1,21 +0,0 @@
1
- class NoScopeMongoMapper
2
- include MongoMapper::Document
3
- include AASM
4
-
5
- key :status, String
6
-
7
- aasm :create_scopes => false, :column => :status do
8
- state :ignored_scope
9
- end
10
- end
11
-
12
- class NoScopeMongoMapperMultiple
13
- include MongoMapper::Document
14
- include AASM
15
-
16
- key :status, String
17
-
18
- aasm :left, :create_scopes => false, :column => :status do
19
- state :ignored_scope
20
- end
21
- end
@@ -1,23 +0,0 @@
1
- class SimpleMongoMapper
2
- include MongoMapper::Document
3
- include AASM
4
-
5
- key :status, String
6
-
7
- aasm column: :status do
8
- state :unknown_scope
9
- state :next
10
- end
11
- end
12
-
13
- class SimpleMongoMapperMultiple
14
- include MongoMapper::Document
15
- include AASM
16
-
17
- key :status, String
18
-
19
- aasm :left, column: :status do
20
- state :unknown_scope
21
- state :next
22
- end
23
- end
@@ -1,25 +0,0 @@
1
- class SimpleNewDslMongoMapper
2
- include MongoMapper::Document
3
- include AASM
4
-
5
- key :status, String
6
-
7
- aasm :column => :status
8
- aasm do
9
- state :unknown_scope
10
- state :next
11
- end
12
- end
13
-
14
- class SimpleNewDslMongoMapperMultiple
15
- include MongoMapper::Document
16
- include AASM
17
-
18
- key :status, String
19
-
20
- aasm :left, :column => :status
21
- aasm :left do
22
- state :unknown_scope
23
- state :next
24
- end
25
- end