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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 65cb4f994852f81d01a64430041c30bc5b801a61
4
- data.tar.gz: d9946fa79e57b00e79147dedb917a4f132e09e06
3
+ metadata.gz: b8fe996e13d273ffa5bf387826e03ffd70459c18
4
+ data.tar.gz: 1dfcffb84b77c3f6a87fe8766ed400c2d49f705f
5
5
  SHA512:
6
- metadata.gz: 95cd8e902837931b931134b0f1ee81e206ec9f79899902b4a4db3263c18979b0d9df079c2431e1d3d2921d30ae977dd7d8fa613fa0e8bed0a0c2c95b12525f29
7
- data.tar.gz: c7907bfa3d88b5a8f53aac87841f69bdc624a843b86f79616227040cb9aeed3273669b19d0c8cbe52decf0f9ec78f5bb448596bd028bf82007a8b9dc8ed2a81d
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
- gem 'sidekiq-promise'
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/[my-github-username]/sidekiq-promise/fork )
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
- result.raise if thenable? result
9
- job_completed job
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
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module Promise
3
- VERSION = "0.1.1"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -58,7 +58,7 @@ module Sidekiq
58
58
 
59
59
  def process_complete_message message
60
60
  unsubscribe
61
- resolve message['job']
61
+ resolve message['result']
62
62
  end
63
63
 
64
64
  def process_error_message message
@@ -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) { double :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
@@ -0,0 +1,9 @@
1
+ class PromisingValuableWorker
2
+ include Sidekiq::Promise
3
+
4
+ def perform i
5
+ MrDarcy.promise do
6
+ resolve i * i
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ class ValuableWorker
2
+ include Sidekiq::Promise
3
+
4
+ def perform i
5
+ i * i
6
+ end
7
+ 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.1.1
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