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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5b90ea5c5ad7ac821065c55b0141d0c3fc150e0
|
4
|
+
data.tar.gz: 1143a6763ec08d757ae98ecda3d1b444e7cd1a9d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
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
|
@@ -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.
|
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-
|
11
|
+
date: 2015-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|