sync-defer 0.9.3 → 0.9.4
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.
- data/CHANGES.md +9 -0
- data/Rakefile +1 -1
- data/lib/eventmachine/sync-defer.rb +2 -2
- data/lib/sync-defer.rb +5 -1
- data/sync-defer.gemspec +2 -2
- data/test/test_sync-defer.rb +19 -2
- metadata +2 -2
data/CHANGES.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# CHANGES
|
2
2
|
|
3
|
+
## sync-defer 0.9.4 -- 2012-03-21
|
4
|
+
|
5
|
+
* Fixed a bug that where there's an exception in multiple computations,
|
6
|
+
the fiber should not be resumed twice or more times. This bug is caught
|
7
|
+
by JRuby.
|
8
|
+
|
9
|
+
* `SyncDefer.defer` should also return only one value if there's only one
|
10
|
+
computation.
|
11
|
+
|
3
12
|
## sync-defer 0.9.3 -- 2012-03-20
|
4
13
|
|
5
14
|
* Also work without a reactor in the generic interface: `SyncDefer.defer`,
|
data/Rakefile
CHANGED
@@ -45,11 +45,11 @@ module EventMachine::SyncDefer
|
|
45
45
|
},
|
46
46
|
lambda{ |result|
|
47
47
|
if exception
|
48
|
-
fiber.resume(nil, exception)
|
48
|
+
fiber.resume(nil, exception) if fiber.alive?
|
49
49
|
else
|
50
50
|
results[index] = result
|
51
51
|
fiber.resume(results.sort.map(&:last), nil) if
|
52
|
-
results.size == funcs.size
|
52
|
+
results.size == funcs.size && fiber.alive?
|
53
53
|
end
|
54
54
|
})
|
55
55
|
end
|
data/lib/sync-defer.rb
CHANGED
@@ -22,7 +22,11 @@ module SyncDefer
|
|
22
22
|
"Only cool.io and eventmachine are supported.")
|
23
23
|
$stderr.puts(" Called from: #{caller.last(5).inspect}")
|
24
24
|
args << block if block_given?
|
25
|
-
args.
|
25
|
+
if args.size == 1
|
26
|
+
args.first.call
|
27
|
+
else
|
28
|
+
args.map(&:call)
|
29
|
+
end
|
26
30
|
end
|
27
31
|
end
|
28
32
|
end
|
data/sync-defer.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "sync-defer"
|
5
|
-
s.version = "0.9.
|
5
|
+
s.version = "0.9.4"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Lin Jen-Shin (godfat)"]
|
9
|
-
s.date = "2012-03-
|
9
|
+
s.date = "2012-03-21"
|
10
10
|
s.description = "Synchronous deferred operations with fibers (coroutines)"
|
11
11
|
s.email = ["godfat (XD) godfat.org"]
|
12
12
|
s.files = [
|
data/test/test_sync-defer.rb
CHANGED
@@ -94,7 +94,7 @@ begin
|
|
94
94
|
EM.stop
|
95
95
|
}.resume
|
96
96
|
}
|
97
|
-
result.inspect.should
|
97
|
+
result.inspect.should.eql [0, 1, 2, 3].inspect
|
98
98
|
end
|
99
99
|
|
100
100
|
should 'defer_multi' do
|
@@ -107,7 +107,7 @@ begin
|
|
107
107
|
EM.stop
|
108
108
|
}.resume
|
109
109
|
}
|
110
|
-
result.inspect.should
|
110
|
+
result.inspect.should.eql [0, 1, 2, 3].inspect
|
111
111
|
end
|
112
112
|
|
113
113
|
should 'raise the exception' do
|
@@ -141,3 +141,20 @@ begin
|
|
141
141
|
rescue LoadError => e
|
142
142
|
puts "eventmachine is not installed, skipping: #{e}"
|
143
143
|
end
|
144
|
+
|
145
|
+
describe SyncDefer do
|
146
|
+
after do
|
147
|
+
RR.verify
|
148
|
+
end
|
149
|
+
|
150
|
+
should 'also work without a reactor, but print a warning' do
|
151
|
+
mock($stderr).puts(is_a(String)).times(2)
|
152
|
+
SyncDefer.defer{ 123 }.should.eql 123
|
153
|
+
end
|
154
|
+
|
155
|
+
should 'multiple computations' do
|
156
|
+
mock($stderr).puts(is_a(String)).times(2)
|
157
|
+
SyncDefer.defer(lambda{1}, lambda{2}){ 3 }.
|
158
|
+
inspect.should.eql [1, 2, 3].inspect
|
159
|
+
end
|
160
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sync-defer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
12
|
+
date: 2012-03-21 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Synchronous deferred operations with fibers (coroutines)
|
15
15
|
email:
|