abstractivator 0.3.0 → 0.3.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a3ef0c368cb253c8c08111f0a204a41efd75e771
4
- data.tar.gz: 35e867d02a3f1ab5f98597eed4f33b8f608cf1ef
3
+ metadata.gz: a5b90ea5c5ad7ac821065c55b0141d0c3fc150e0
4
+ data.tar.gz: 1143a6763ec08d757ae98ecda3d1b444e7cd1a9d
5
5
  SHA512:
6
- metadata.gz: c3c36e1d70be6effe19a3cc00ed630f24a53f7e3f3d2052a29c6ab3b285bfbf7d25301ad6d052c4626af50389f1555ebcd5bf5ae783bd34f7666727c2743760d
7
- data.tar.gz: 553330854e53ce6027e804119bb21b6f31b21837da7898cd3502a40bf43f0605c0d23c60342b2971bf7b91e92be0c366994d174d79dbc063e6b8670fcc4c0886
6
+ metadata.gz: 9e48495ea18d4ec76b1b9f9c95768995643ad77a02f36ed08dafcdc9c22e0d41cba293dbcfd3250598b5d1d0f0ecb408a097a6899fb7807757f19648ec9f292e
7
+ data.tar.gz: 3f410933ce0c6f4c1d2d7eb69f8fbba241607731a524bce093fd62cc00f1547e3f7c4d492f67a7df770acbe2e29b16e0a04c826b954a9ce3a0b16af1e7196b98
@@ -36,12 +36,15 @@ module Abstractivator
36
36
 
37
37
  def mongoid_fiber_defer(&action)
38
38
  db = Mongoid::Threaded.database_override
39
- fiber_defer do
40
- # in the background thread
41
- Mongoid.override_database(db) # set the db to what it was in the main thread
42
- action.call
39
+ begin
40
+ fiber_defer do
41
+ # in the background thread
42
+ Mongoid.override_database(db) # set the db to what it was in the main thread
43
+ action.call
44
+ end
45
+ ensure
46
+ Mongoid.override_database(db) # main thread has moved on before we resume here. restore the db override.
43
47
  end
44
- Mongoid.override_database(db) # main thread has moved on before we resume here. restore the db override.
45
48
  end
46
49
  end
47
50
  end
@@ -1,3 +1,3 @@
1
1
  module Abstractivator
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.1'
3
3
  end
@@ -71,6 +71,30 @@ describe Abstractivator::FiberDefer do
71
71
  end
72
72
  end
73
73
  end
74
+ it 'works with simultaneous deferred actions' do
75
+ EM.run do
76
+ log = []
77
+ EM.next_tick do
78
+ with_fiber_defer do
79
+ log << 'start1'
80
+ fiber_defer { sleep(0.1) }
81
+ log << 'end1'
82
+ end
83
+ end
84
+ EM.next_tick do
85
+ with_fiber_defer do
86
+ log << 'start2'
87
+ fiber_defer { sleep(0.2) }
88
+ log << 'end2'
89
+ expect(log).to eql %w(start1 start2 end1 end2)
90
+ EM.stop
91
+ end
92
+ end
93
+ EM.next_tick do
94
+ sleep(0.3)
95
+ end
96
+ end
97
+ end
74
98
  end
75
99
 
76
100
  describe '#mongoid_fiber_defer' do
@@ -97,5 +121,13 @@ describe Abstractivator::FiberDefer do
97
121
  end
98
122
  expect(the_log).to eql %w(bad good bad good)
99
123
  end
124
+ it 'returns the value of its block' do
125
+ EM.run do
126
+ with_fiber_defer do
127
+ expect(mongoid_fiber_defer{42}).to eql 42
128
+ EM.stop
129
+ end
130
+ end
131
+ end
100
132
  end
101
133
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abstractivator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Winton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-15 00:00:00.000000000 Z
11
+ date: 2015-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler