chore-core 4.1.0 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +3 -1
- data/lib/chore/job.rb +6 -1
- data/lib/chore/version.rb +1 -1
- data/lib/chore/worker.rb +4 -2
- data/spec/chore/job_spec.rb +8 -0
- data/spec/chore/worker_spec.rb +9 -0
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: daa3f5279f93a07ef0291af227bb050b856b513c9128d4780d103372e58b3136
|
4
|
+
data.tar.gz: ff73b6ad7bf09039c2e9d2307edacb3abfdce90f43f3f245c51769d9a3a595a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3d53aba8c2146432a9d257fad873c44aa85681ed803f5ea6c4e3b15ac3d13bc0c60b50d7bd6c5e3e573de6efea5eb37f75c37d9bb4f47781133c6e578db51fb
|
7
|
+
data.tar.gz: ea6be89c29d2d96da53958d580ffa16c6e2da4cff53837186ae6a8b8da43130a929ea24d564e7253e375507c0d243b38ff4a473dd05f02105fbc945acd27c1fa
|
data/README.md
CHANGED
@@ -241,6 +241,8 @@ A number of hooks, both global and per-job, exist in Chore for flexibility and c
|
|
241
241
|
* `on_rejected(message)`
|
242
242
|
* `on_failure(message, error)`
|
243
243
|
* `on_permanent_failure(queue_name, message, error)`
|
244
|
+
* `around_publish`
|
245
|
+
* `around_perform`
|
244
246
|
|
245
247
|
All per-job hooks can also be global hooks.
|
246
248
|
|
@@ -394,4 +396,4 @@ pgrep -f chore-worker
|
|
394
396
|
|
395
397
|
## Copyright
|
396
398
|
|
397
|
-
Copyright (c) 2013 -
|
399
|
+
Copyright (c) 2013 - 2023 Tapjoy. See [LICENSE.txt](LICENSE.txt) for further details.
|
data/lib/chore/job.rb
CHANGED
@@ -144,7 +144,12 @@ module Chore
|
|
144
144
|
def perform_async(*args)
|
145
145
|
self.class.run_hooks_for(:before_publish,*args)
|
146
146
|
@chore_publisher ||= self.class.options[:publisher]
|
147
|
-
|
147
|
+
|
148
|
+
publish_job_hash = self.class.job_hash(args)
|
149
|
+
Chore.run_hooks_for(:around_publish, self.class.prefixed_queue_name, publish_job_hash) do
|
150
|
+
@chore_publisher.publish(self.class.prefixed_queue_name,publish_job_hash)
|
151
|
+
end
|
152
|
+
|
148
153
|
self.class.run_hooks_for(:after_publish,*args)
|
149
154
|
end
|
150
155
|
|
data/lib/chore/version.rb
CHANGED
data/lib/chore/worker.rb
CHANGED
@@ -111,7 +111,7 @@ module Chore
|
|
111
111
|
|
112
112
|
begin
|
113
113
|
Chore.logger.info { "Running job #{klass} with params #{message}"}
|
114
|
-
perform_job(klass,message)
|
114
|
+
perform_job(klass, message)
|
115
115
|
item.consumer.complete(item.id, item.receipt_handle)
|
116
116
|
Chore.logger.info { "Finished job #{klass} with params #{message}"}
|
117
117
|
klass.run_hooks_for(:after_perform, message)
|
@@ -149,7 +149,9 @@ module Chore
|
|
149
149
|
end
|
150
150
|
|
151
151
|
def perform_job(klass, message)
|
152
|
-
|
152
|
+
Chore.run_hooks_for(:around_perform, klass, message) do
|
153
|
+
klass.perform(*options[:payload_handler].payload(message))
|
154
|
+
end
|
153
155
|
end
|
154
156
|
end
|
155
157
|
end
|
data/spec/chore/job_spec.rb
CHANGED
@@ -69,6 +69,14 @@ describe Chore::Job do
|
|
69
69
|
Chore::Publisher.any_instance.should_receive(:publish).with('test_queue',{:class => 'TestJob',:args => args}).and_return(true)
|
70
70
|
TestJob.perform_async(*args)
|
71
71
|
end
|
72
|
+
|
73
|
+
it 'calls the around_publish hook with the correct parameters' do
|
74
|
+
args = [1,2,{:h => 'ash'}]
|
75
|
+
expect(Chore).to receive(:run_hooks_for).with(:around_publish, 'test_queue', {:class => 'TestJob',:args => args}).and_call_original
|
76
|
+
TestJob.queue_options(:publisher => Chore::Publisher)
|
77
|
+
Chore::Publisher.any_instance.should_receive(:publish).with('test_queue',{:class => 'TestJob',:args => args}).and_return(true)
|
78
|
+
TestJob.perform_async(*args)
|
79
|
+
end
|
72
80
|
end
|
73
81
|
|
74
82
|
describe 'publisher configured via Chore.configure' do
|
data/spec/chore/worker_spec.rb
CHANGED
@@ -69,6 +69,15 @@ describe Chore::Worker do
|
|
69
69
|
Chore::Worker.start(work, {:payload_handler => payload_handler})
|
70
70
|
end
|
71
71
|
|
72
|
+
it 'calls the around_perform hook with the correct parameters' do
|
73
|
+
expect(Chore).to receive(:run_hooks_for).with(:around_perform, SimpleJob, {"class" => 'SimpleJob', "args" => job_args}).and_call_original
|
74
|
+
expect(Chore).to receive(:run_hooks_for).at_least(:once).and_call_original
|
75
|
+
|
76
|
+
work = Chore::UnitOfWork.new('1', nil, 'test', 60, encoded_job, 0, consumer)
|
77
|
+
w = Chore::Worker.new(work, { payload_handler: payload_handler })
|
78
|
+
w.start
|
79
|
+
end
|
80
|
+
|
72
81
|
context 'when the job has a dedupe_lambda defined' do
|
73
82
|
context 'when the value being deduped on is unique' do
|
74
83
|
let(:job_args) { [rand,2,'3'] }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chore-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tapjoy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -210,8 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
210
210
|
- !ruby/object:Gem::Version
|
211
211
|
version: '0'
|
212
212
|
requirements: []
|
213
|
-
|
214
|
-
rubygems_version: 2.5.1
|
213
|
+
rubygems_version: 3.0.3.1
|
215
214
|
signing_key:
|
216
215
|
specification_version: 4
|
217
216
|
summary: Job processing... for the future!
|