parallizer 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/README.md +24 -4
- data/lib/parallizer.rb +10 -0
- data/lib/parallizer/version.rb +1 -1
- data/spec/parallizer_spec.rb +40 -6
- metadata +2 -8
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -122,8 +122,8 @@ require 'net/http'
|
|
122
122
|
require 'parallizer'
|
123
123
|
|
124
124
|
parallizer = Parallizer.new(Net::HTTP)
|
125
|
-
parallizer.add.get('www.google.com', '
|
126
|
-
parallizer.add.get('www.google.com', '
|
125
|
+
parallizer.add.get('www.google.com', '/search?q=foo')
|
126
|
+
parallizer.add.get('www.google.com', '/search?q=bar')
|
127
127
|
http_service = parallizer.create_proxy
|
128
128
|
```
|
129
129
|
|
@@ -146,10 +146,30 @@ require 'net/http'
|
|
146
146
|
require 'parallizer'
|
147
147
|
|
148
148
|
parallizer = Parallizer.new(Net::HTTP, :retries => 3)
|
149
|
-
parallizer.add.get('www.google.com', '
|
149
|
+
parallizer.add.get('www.google.com', '/search?q=foo')
|
150
150
|
http_service = parallizer.create_proxy
|
151
151
|
|
152
|
-
http_service.get('www.google.com', '
|
152
|
+
http_service.get('www.google.com', '/search?q=foo') # Will be called up to 4 times
|
153
|
+
```
|
154
|
+
|
155
|
+
|
156
|
+
### Retrieve all results
|
157
|
+
|
158
|
+
You can also execute all added methods in parallel and get all the results.
|
159
|
+
|
160
|
+
```ruby
|
161
|
+
require 'net/http'
|
162
|
+
require 'parallizer'
|
163
|
+
|
164
|
+
parallizer = Parallizer.new(Net::HTTP)
|
165
|
+
parallizer.add.get('www.google.com', '/search?q=foo')
|
166
|
+
parallizer.add.get('www.google.com', '/search?q=bar')
|
167
|
+
|
168
|
+
call_results = parallizer.all_call_results
|
169
|
+
# {
|
170
|
+
# [:get, 'www.google.com', '/search?q=foo'] => ...,
|
171
|
+
# [:get, 'www.google.com', '/search?q=foo'] => ...
|
172
|
+
# }
|
153
173
|
```
|
154
174
|
|
155
175
|
|
data/lib/parallizer.rb
CHANGED
@@ -69,6 +69,16 @@ class Parallizer
|
|
69
69
|
::Parallizer::Proxy.new(client, call_infos)
|
70
70
|
end
|
71
71
|
|
72
|
+
def all_call_results
|
73
|
+
proxy = create_proxy
|
74
|
+
|
75
|
+
call_infos.keys.inject({}) do |result, method_name_and_args|
|
76
|
+
result[method_name_and_args] = proxy.send(*method_name_and_args)
|
77
|
+
|
78
|
+
result
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
72
82
|
private
|
73
83
|
|
74
84
|
def execute
|
data/lib/parallizer/version.rb
CHANGED
data/spec/parallizer_spec.rb
CHANGED
@@ -3,21 +3,30 @@ require 'spec_helper'
|
|
3
3
|
describe Parallizer do
|
4
4
|
class TestObject
|
5
5
|
def a_method(arg)
|
6
|
-
|
6
|
+
@a_method ||= {}
|
7
|
+
@a_method[arg] ||= rand(1..100)
|
7
8
|
end
|
8
9
|
|
9
10
|
def another_method
|
11
|
+
@another_method ||= rand(1..100)
|
12
|
+
end
|
13
|
+
|
14
|
+
def current_thread
|
15
|
+
Thread.current
|
16
|
+
end
|
17
|
+
|
18
|
+
def another_current_thread
|
10
19
|
Thread.current
|
11
20
|
end
|
12
21
|
end
|
13
22
|
|
14
23
|
class AnotherTestObject
|
15
24
|
def a_method
|
16
|
-
|
25
|
+
@a_method ||= rand(1..100)
|
17
26
|
end
|
18
27
|
|
19
28
|
def another_method
|
20
|
-
|
29
|
+
@another_method ||= rand(1..100)
|
21
30
|
end
|
22
31
|
end
|
23
32
|
|
@@ -90,6 +99,31 @@ describe Parallizer do
|
|
90
99
|
end
|
91
100
|
end
|
92
101
|
|
102
|
+
describe "#all_call_results" do
|
103
|
+
before do
|
104
|
+
@client = TestObject.new
|
105
|
+
@parallizer = Parallizer.new(@client)
|
106
|
+
end
|
107
|
+
|
108
|
+
execute do
|
109
|
+
@results = @parallizer.all_call_results
|
110
|
+
end
|
111
|
+
|
112
|
+
context "gives all results" do
|
113
|
+
before do
|
114
|
+
@parallizer.add_call(:a_method, 'arg1')
|
115
|
+
@parallizer.add_call(:a_method, 'arg2')
|
116
|
+
@parallizer.add_call(:another_method)
|
117
|
+
end
|
118
|
+
|
119
|
+
it "gives results in order executed" do
|
120
|
+
@results[[:a_method, 'arg1']].should == @client.a_method('arg1')
|
121
|
+
@results[[:a_method, 'arg2']].should == @client.a_method('arg2')
|
122
|
+
@results[[:another_method]].should == @client.another_method
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
93
127
|
describe "#create_proxy" do
|
94
128
|
before do
|
95
129
|
@client = TestObject.new
|
@@ -102,15 +136,15 @@ describe Parallizer do
|
|
102
136
|
|
103
137
|
context "with existing method on client" do
|
104
138
|
before do
|
105
|
-
@parallizer.add_call(:
|
139
|
+
@parallizer.add_call(:current_thread)
|
106
140
|
end
|
107
141
|
|
108
142
|
it "should execute method with add_call in a separate thread" do
|
109
|
-
@proxy.
|
143
|
+
@proxy.current_thread.should_not == Thread.current
|
110
144
|
end
|
111
145
|
|
112
146
|
it "should execute method not added with add_call in current thread" do
|
113
|
-
@proxy.
|
147
|
+
@proxy.another_current_thread.should == Thread.current
|
114
148
|
end
|
115
149
|
end
|
116
150
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parallizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
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: 2013-
|
12
|
+
date: 2013-07-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: celluloid
|
@@ -110,18 +110,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
110
|
- - ! '>='
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: '0'
|
113
|
-
segments:
|
114
|
-
- 0
|
115
|
-
hash: 1172644731991110538
|
116
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
114
|
none: false
|
118
115
|
requirements:
|
119
116
|
- - ! '>='
|
120
117
|
- !ruby/object:Gem::Version
|
121
118
|
version: '0'
|
122
|
-
segments:
|
123
|
-
- 0
|
124
|
-
hash: 1172644731991110538
|
125
119
|
requirements: []
|
126
120
|
rubyforge_project: parallizer
|
127
121
|
rubygems_version: 1.8.25
|