sidekiq-promise 0.1.1 → 0.2.0

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: 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