sidekiq-promise 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -2
- data/lib/sidekiq/promise/middleware.rb +2 -2
- data/lib/sidekiq/promise/server_middleware.rb +6 -2
- data/lib/sidekiq/promise/version.rb +1 -1
- data/lib/sidekiq/promise/worker.rb +1 -1
- data/spec/acceptance/promise_promise_value_spec.rb +16 -0
- data/spec/acceptance/promise_value_spec.rb +16 -0
- data/spec/lib/sidekiq/promise/middleware_spec.rb +2 -2
- data/spec/lib/sidekiq/promise/server_middleware_spec.rb +3 -2
- data/spec/workers/promising_valuable_worker.rb +9 -0
- data/spec/workers/valuable_worker.rb +7 -0
- metadata +9 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8fe996e13d273ffa5bf387826e03ffd70459c18
|
4
|
+
data.tar.gz: 1dfcffb84b77c3f6a87fe8766ed400c2d49f705f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77f93d1654e06bf548b1fe56d3b10405da12e981db7023717440ff0fa7629c3d3f95e3dcfe1b47177481de637815edad676650a5c1eb7ca015b65f9485428f15
|
7
|
+
data.tar.gz: 6db709578b3a96ecc0872b4ce28e49c9822b136bc7c78e96d4820d6f984c49d21bb45fab06f74b1c1e4ea23219bafdf9ae53ab507273ee4b877160cbdf20c9b4
|
data/README.md
CHANGED
@@ -10,7 +10,9 @@
|
|
10
10
|
|
11
11
|
Add this line to your application's Gemfile:
|
12
12
|
|
13
|
-
|
13
|
+
```ruby
|
14
|
+
gem 'sidekiq-promise'
|
15
|
+
```
|
14
16
|
|
15
17
|
And then execute:
|
16
18
|
|
@@ -75,7 +77,7 @@ notifies the user that the processing is complete.
|
|
75
77
|
|
76
78
|
## Contributing
|
77
79
|
|
78
|
-
1. Fork it ( https://github.com/
|
80
|
+
1. Fork it ( https://github.com/jamesotron/sidekiq-promise/fork )
|
79
81
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
80
82
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
81
83
|
4. Push to the branch (`git push origin my-new-feature`)
|
@@ -12,8 +12,8 @@ module Sidekiq
|
|
12
12
|
publish_message redis_pool, status: 'dequeued', job: job, jid: job['jid']
|
13
13
|
end
|
14
14
|
|
15
|
-
def job_completed job, redis_pool=Sidekiq.redis_pool
|
16
|
-
publish_message redis_pool, status: 'complete', job: job, jid: job['jid']
|
15
|
+
def job_completed job, result=nil, redis_pool=Sidekiq.redis_pool
|
16
|
+
publish_message redis_pool, status: 'complete', job: job, jid: job['jid'], result: result
|
17
17
|
end
|
18
18
|
|
19
19
|
def job_errored job, e, redis_pool=Sidekiq.redis_pool
|
@@ -5,8 +5,12 @@ module Sidekiq
|
|
5
5
|
def call worker, job, queue
|
6
6
|
job_dequeued job
|
7
7
|
result = yield
|
8
|
-
|
9
|
-
|
8
|
+
if thenable? result
|
9
|
+
result.raise
|
10
|
+
job_completed job, result.result
|
11
|
+
else
|
12
|
+
job_completed job, result
|
13
|
+
end
|
10
14
|
rescue Exception => e
|
11
15
|
job_errored job, e
|
12
16
|
raise e
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Promise promise value' do
|
4
|
+
before(:all) { start_worker }
|
5
|
+
after(:all) { kill_worker }
|
6
|
+
after { clear_jobs }
|
7
|
+
|
8
|
+
let(:value) { rand(99) }
|
9
|
+
let(:result) { value * value }
|
10
|
+
let(:promise) { PromisingValuableWorker.as_promise(value) }
|
11
|
+
subject { promise }
|
12
|
+
|
13
|
+
its(:final) { should be_resolved }
|
14
|
+
its(:final) { should_not be_rejected }
|
15
|
+
its(:result) { should eq result }
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Promise value' do
|
4
|
+
before(:all) { start_worker }
|
5
|
+
after(:all) { kill_worker }
|
6
|
+
after { clear_jobs }
|
7
|
+
|
8
|
+
let(:value) { rand(99) }
|
9
|
+
let(:result) { value * value }
|
10
|
+
let(:promise) { ValuableWorker.as_promise(value) }
|
11
|
+
subject { promise }
|
12
|
+
|
13
|
+
its(:final) { should be_resolved }
|
14
|
+
its(:final) { should_not be_rejected }
|
15
|
+
its(:result) { should eq result }
|
16
|
+
end
|
@@ -21,8 +21,8 @@ describe Sidekiq::Promise::Middleware do
|
|
21
21
|
|
22
22
|
describe '#job_completed' do
|
23
23
|
it 'delegates to #publish_message' do
|
24
|
-
expect(middleware).to receive(:publish_message).with(redis_pool, {status: 'complete', job: {}, jid: nil})
|
25
|
-
middleware.job_completed Hash.new, redis_pool
|
24
|
+
expect(middleware).to receive(:publish_message).with(redis_pool, {status: 'complete', job: {}, jid: nil, result: :result})
|
25
|
+
middleware.job_completed Hash.new, :result, redis_pool
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Sidekiq::Promise::ServerMiddleware do
|
4
4
|
let(:worker) { double :worker }
|
5
|
-
let(:job) {
|
5
|
+
let(:job) { { jid: '12345' } }
|
6
6
|
let(:queue) { 'default' }
|
7
7
|
let(:middleware) { described_class.new }
|
8
8
|
|
@@ -10,7 +10,8 @@ describe Sidekiq::Promise::ServerMiddleware do
|
|
10
10
|
When 'the job is successful' do
|
11
11
|
it 'dequeues the job, then yields, then completes' do
|
12
12
|
expect(middleware).to receive(:job_dequeued).with(job)
|
13
|
-
expect(middleware).to receive(:job_completed).with(job)
|
13
|
+
expect(middleware).to receive(:job_completed).with(job, [[]])
|
14
|
+
# ↓ [[]] is returned by RSpec's block probe. ↑
|
14
15
|
expect { |b| middleware.call(worker, job, queue, &b) }.to yield_control
|
15
16
|
end
|
16
17
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-promise
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Harton
|
@@ -174,6 +174,8 @@ files:
|
|
174
174
|
- spec/acceptance/completing_job_spec.rb
|
175
175
|
- spec/acceptance/crashing_job_spec.rb
|
176
176
|
- spec/acceptance/failing_job_spec.rb
|
177
|
+
- spec/acceptance/promise_promise_value_spec.rb
|
178
|
+
- spec/acceptance/promise_value_spec.rb
|
177
179
|
- spec/acceptance/promising_job_spec.rb
|
178
180
|
- spec/acceptance/promising_to_fail_worker_spec.rb
|
179
181
|
- spec/lib/sidekiq/promise/client_middleware_spec.rb
|
@@ -187,9 +189,11 @@ files:
|
|
187
189
|
- spec/support/sidekiq_helpers.rb
|
188
190
|
- spec/workers/crashy_worker.rb
|
189
191
|
- spec/workers/promising_to_fail_worker.rb
|
192
|
+
- spec/workers/promising_valuable_worker.rb
|
190
193
|
- spec/workers/promising_worker.rb
|
191
194
|
- spec/workers/raisey_worker.rb
|
192
195
|
- spec/workers/sleepy_worker.rb
|
196
|
+
- spec/workers/valuable_worker.rb
|
193
197
|
homepage: https://github.com/jamesotron/sidekiq-promise
|
194
198
|
licenses:
|
195
199
|
- MIT
|
@@ -218,6 +222,8 @@ test_files:
|
|
218
222
|
- spec/acceptance/completing_job_spec.rb
|
219
223
|
- spec/acceptance/crashing_job_spec.rb
|
220
224
|
- spec/acceptance/failing_job_spec.rb
|
225
|
+
- spec/acceptance/promise_promise_value_spec.rb
|
226
|
+
- spec/acceptance/promise_value_spec.rb
|
221
227
|
- spec/acceptance/promising_job_spec.rb
|
222
228
|
- spec/acceptance/promising_to_fail_worker_spec.rb
|
223
229
|
- spec/lib/sidekiq/promise/client_middleware_spec.rb
|
@@ -231,6 +237,8 @@ test_files:
|
|
231
237
|
- spec/support/sidekiq_helpers.rb
|
232
238
|
- spec/workers/crashy_worker.rb
|
233
239
|
- spec/workers/promising_to_fail_worker.rb
|
240
|
+
- spec/workers/promising_valuable_worker.rb
|
234
241
|
- spec/workers/promising_worker.rb
|
235
242
|
- spec/workers/raisey_worker.rb
|
236
243
|
- spec/workers/sleepy_worker.rb
|
244
|
+
- spec/workers/valuable_worker.rb
|