aasm 4.5.0 → 4.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 92b6a0df28245debe06c0ecbd3bd95e91b0cf323
4
- data.tar.gz: 99bfa6652b17a26388b073ee431a1878ce961a4e
3
+ metadata.gz: a0308a8cef74abb6ac913b1dd31bc8673951a837
4
+ data.tar.gz: aef81a4c7f1f4045cd9e5202e65e7fd3562a1db2
5
5
  SHA512:
6
- metadata.gz: d6cf5a7eea74d1c20108d48370d0f6048722efefb6af0110c70de56dd13032bcaabf57749add95ae25dc086faab8cbb5dcf9ad08ad4cafbafdfb400481ce1fd4
7
- data.tar.gz: 90a92ba66f2b4d67c898a9076f324e0c99ce768aa5160f6d70dc74bca48e8ba4cf95317bf5e203b66985e9dcd77a52fb814dc65cc45f498dfeab20fde31fecb8
6
+ metadata.gz: f9d0dcf0e16ccf7ecf050163cdee8f6f8e993f17890a73508e64f48e519970810d3df30fef5bec877bb5cd6dd311570c6cf6ccd77b779c4f0220ceee660a8ebf
7
+ data.tar.gz: 852dd93351612a60d03472b8ff4a043ffe488d89e620fedc498c5d9895c6260b83aaf182d5b50a9bdd4929a09ba68f704a152aa4cd3134d904e3c4b1e5f061b6
data/.travis.yml CHANGED
@@ -11,6 +11,7 @@ rvm:
11
11
  - 2.2
12
12
  # - jruby-18mode # JRuby in 1.8 mode
13
13
  - jruby-1.7 # JRuby in 1.9 mode
14
+ - jruby-9.0.3.0
14
15
  - rbx-2.2.1
15
16
 
16
17
  services: mongodb
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 4.5.1
4
+
5
+ * make sure to use override configuration options if state machine is defined more than once (see [issue #287](https://github.com/aasm/aasm/issues/287) for details)
6
+
3
7
  ## 4.5.0
4
8
 
5
9
  * add RSpec matchers `have_state`, `allow_event` and `allow_transition_to` (see [issue #147](https://github.com/aasm/aasm/issues/147) for details)
data/README.md CHANGED
@@ -615,7 +615,7 @@ callback or the state update fails, all changes to any database record are rolle
615
615
  Mongodb does not support transactions.
616
616
 
617
617
  If you want to make sure a depending action happens only after the transaction is committed,
618
- use the `after_commit` callback, like this:
618
+ use the `after_commit` callback along with the auto-save (bang) methods, like this:
619
619
 
620
620
  ```ruby
621
621
  class Job < ActiveRecord::Base
@@ -634,6 +634,18 @@ class Job < ActiveRecord::Base
634
634
  ...
635
635
  end
636
636
  end
637
+
638
+ job = Job.where(state: 'sleeping').first!
639
+ job.run! # Saves the model and triggers the after_commit callback
640
+ ```
641
+
642
+ Note that the following will not run the `after_commit` callbacks because
643
+ the auto-save method is not used:
644
+
645
+ ```ruby
646
+ job = Job.where(state: 'sleeping').first!
647
+ job.run
648
+ job.save! #notify_about_running_job is not run
637
649
  ```
638
650
 
639
651
  If you want to encapsulate state changes within an own transaction, the behavior
data/lib/aasm/aasm.rb CHANGED
@@ -39,7 +39,20 @@ module AASM
39
39
  AASM::StateMachine[self][state_machine_name] ||= AASM::StateMachine.new(state_machine_name)
40
40
 
41
41
  @aasm ||= {}
42
- @aasm[state_machine_name] ||= AASM::Base.new(self, state_machine_name, AASM::StateMachine[self][state_machine_name], options)
42
+ if @aasm[state_machine_name]
43
+ # make sure to use provided options
44
+ options.each do |key, value|
45
+ @aasm[state_machine_name].state_machine.config.send("#{key}=", value)
46
+ end
47
+ else
48
+ # create a new base
49
+ @aasm[state_machine_name] = AASM::Base.new(
50
+ self,
51
+ state_machine_name,
52
+ AASM::StateMachine[self][state_machine_name],
53
+ options
54
+ )
55
+ end
43
56
  @aasm[state_machine_name].instance_eval(&block) if block # new DSL
44
57
  @aasm[state_machine_name]
45
58
  end
data/lib/aasm/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module AASM
2
- VERSION = "4.5.0"
2
+ VERSION = "4.5.1"
3
3
  end
@@ -1,6 +1,11 @@
1
1
  class Silencer
2
2
  include AASM
3
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
+
4
9
  aasm :whiny_transitions => false do
5
10
  state :silent, :initial => true
6
11
  state :crying
@@ -298,6 +298,19 @@ describe "named scopes with the new DSL" do
298
298
  it "does not create scopes if requested" do
299
299
  expect(MultipleNoScope).not_to respond_to(:pending)
300
300
  end
301
+
302
+ context "result of scope" do
303
+ let!(:dsl1) { MultipleSimpleNewDsl.create!(status: :new) }
304
+ let!(:dsl2) { MultipleSimpleNewDsl.create!(status: :unknown_scope) }
305
+
306
+ after do
307
+ MultipleSimpleNewDsl.destroy_all
308
+ end
309
+
310
+ it "created scope works as where(name: :scope_name)" do
311
+ expect(MultipleSimpleNewDsl.unknown_scope).to contain_exactly(dsl2)
312
+ end
313
+ end
301
314
  end # scopes
302
315
 
303
316
  describe "direct assignment" do
@@ -299,6 +299,18 @@ describe "named scopes with the new DSL" do
299
299
  expect(NoScope).not_to respond_to(:pending)
300
300
  end
301
301
 
302
+ context "result of scope" do
303
+ let!(:dsl1) { SimpleNewDsl.create!(status: :new) }
304
+ let!(:dsl2) { SimpleNewDsl.create!(status: :unknown_scope) }
305
+
306
+ after do
307
+ SimpleNewDsl.destroy_all
308
+ end
309
+
310
+ it "created scope works as where(name: :scope_name)" do
311
+ expect(SimpleNewDsl.unknown_scope).to contain_exactly(dsl2)
312
+ end
313
+ end
302
314
  end # scopes
303
315
 
304
316
  describe "direct assignment" do
@@ -31,7 +31,7 @@ describe 'transitions' do
31
31
  expect(silencer).to be_smiling
32
32
  end
33
33
 
34
- it 'should call the block when success' do
34
+ it 'should call the block on success' do
35
35
  silencer = Silencer.new
36
36
  success = false
37
37
  expect {
@@ -41,7 +41,7 @@ describe 'transitions' do
41
41
  }.to change { success }.to(true)
42
42
  end
43
43
 
44
- it 'should not call the block when failure' do
44
+ it 'should not call the block on failure' do
45
45
  silencer = Silencer.new
46
46
  success = false
47
47
  expect {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aasm
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.5.0
4
+ version: 4.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Barron
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-11-16 00:00:00.000000000 Z
13
+ date: 2015-12-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -256,7 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
256
256
  version: '0'
257
257
  requirements: []
258
258
  rubyforge_project:
259
- rubygems_version: 2.2.2
259
+ rubygems_version: 2.4.5
260
260
  signing_key:
261
261
  specification_version: 4
262
262
  summary: State machine mixin for Ruby objects