queue_classic_plus 4.0.0.alpha8 → 4.0.0.alpha9
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 +4 -4
- data/README.md +4 -0
- data/lib/queue_classic_plus/version.rb +1 -1
- data/lib/queue_classic_plus/worker.rb +8 -8
- data/spec/base_spec.rb +1 -5
- data/spec/spec_helper.rb +7 -0
- data/spec/worker_spec.rb +21 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 998da8f0e2f5f397e1125b9f47f447ba3cdb17908e79bb4eb9d34a5acb87f7d8
|
4
|
+
data.tar.gz: fb21b8b1175142d27792885d814597c145b68fe2e82e8541d6db78a000c30a86
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84850b2d1be63a0127adf54eab5d810b6fde5de1d9ee2826a2121f76343fc3442cac74de674858234fcf5ae1f25c418f70d578e242280f83485a892e935f13e3
|
7
|
+
data.tar.gz: 1e2e3b3ca6d2280c5aa445737b7179e2bd7f800c8c5a971d81fc3978f753189f437c99fe6ea81b7d69c079b631e4da41c1adf09032f9fe92863c8003e3fd8ee4
|
data/README.md
CHANGED
@@ -169,3 +169,7 @@ require "queue_classic_plus/datadog"
|
|
169
169
|
```
|
170
170
|
createdb queue_classic_plus_test
|
171
171
|
```
|
172
|
+
|
173
|
+
## Releasing
|
174
|
+
|
175
|
+
Releasing is done in CircleCI via the `push_to_rubygems`, triggered by pushing a tagged commit. To do so, simply [create a new GitHub release](https://github.com/rainforestapp/queue_classic_plus/releases/new).
|
@@ -25,13 +25,14 @@ module QueueClassicPlus
|
|
25
25
|
end
|
26
26
|
|
27
27
|
@failed_job = job
|
28
|
-
@
|
28
|
+
@raw_args = job[:args]
|
29
|
+
@failed_job_args = failed_job_class ? failed_job_class.deserialized(@raw_args) : @raw_args
|
29
30
|
|
30
31
|
if force_retry && !(failed_job_class.respond_to?(:disable_retries) && failed_job_class.disable_retries)
|
31
32
|
Metrics.increment("qc.force_retry", source: @q_name)
|
32
33
|
retry_with_remaining(e)
|
33
34
|
# The mailers doesn't have a retries_on?
|
34
|
-
|
35
|
+
elsif failed_job_class.respond_to?(:retries_on?) && failed_job_class.retries_on?(e)
|
35
36
|
Metrics.increment("qc.retry", source: @q_name)
|
36
37
|
retry_with_remaining(e)
|
37
38
|
else
|
@@ -60,11 +61,9 @@ module QueueClassicPlus
|
|
60
61
|
end
|
61
62
|
|
62
63
|
def failed_job_class
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
nil
|
67
|
-
end
|
64
|
+
Object.const_get(@failed_job[:method].split('.')[0])
|
65
|
+
rescue NameError
|
66
|
+
nil
|
68
67
|
end
|
69
68
|
|
70
69
|
def backoff
|
@@ -80,7 +79,8 @@ module QueueClassicPlus
|
|
80
79
|
def enqueue_failed(e)
|
81
80
|
sql = "INSERT INTO #{QC.table_name} (q_name, method, args, last_error) VALUES ('failed_jobs', $1, $2, $3)"
|
82
81
|
last_error = e.backtrace ? ([e.message] + e.backtrace ).join("\n") : e.message
|
83
|
-
|
82
|
+
|
83
|
+
QC.default_conn_adapter.execute sql, @failed_job[:method], JSON.dump(@raw_args), last_error
|
84
84
|
|
85
85
|
QueueClassicPlus.exception_handler.call(e, @failed_job)
|
86
86
|
Metrics.increment("qc.errors", source: @q_name)
|
data/spec/base_spec.rb
CHANGED
@@ -160,11 +160,7 @@ describe QueueClassicPlus::Base do
|
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
163
|
-
context "with Rails defined" do
|
164
|
-
require 'active_job/arguments'
|
165
|
-
|
166
|
-
before { stub_const('Rails', true) }
|
167
|
-
|
163
|
+
context "with Rails defined", rails: true do
|
168
164
|
subject do
|
169
165
|
Class.new(QueueClassicPlus::Base) do
|
170
166
|
@queue = :test
|
data/spec/spec_helper.rb
CHANGED
@@ -26,4 +26,11 @@ RSpec.configure do |config|
|
|
26
26
|
# Reset the default (memoized) queue instance between specs
|
27
27
|
QC.default_queue = nil
|
28
28
|
end
|
29
|
+
|
30
|
+
config.before(:each, rails: true) do
|
31
|
+
require 'active_job'
|
32
|
+
require 'active_job/arguments'
|
33
|
+
|
34
|
+
stub_const('Rails', Struct.new(:logger).new(Logger.new(STDOUT)))
|
35
|
+
end
|
29
36
|
end
|
data/spec/worker_spec.rb
CHANGED
@@ -26,6 +26,26 @@ describe QueueClassicPlus::CustomWorker do
|
|
26
26
|
worker.work
|
27
27
|
expect(failed_queue.count).to eq(1)
|
28
28
|
end
|
29
|
+
|
30
|
+
context 'when Rails is defined', rails: true do
|
31
|
+
let(:job_type) { Jobs::Tests::TestJobNoRetry }
|
32
|
+
let(:queue) { job_type.queue }
|
33
|
+
|
34
|
+
it 'properly serializes arguments for jobs in the failed queue' do
|
35
|
+
job_type.enqueue_perform(:raise)
|
36
|
+
expect(failed_queue.count).to eq(0)
|
37
|
+
worker.work
|
38
|
+
|
39
|
+
expect(failed_queue.count).to eq(1)
|
40
|
+
job = QueueClassicMatchers::QueueClassicRspec.find_by_args(
|
41
|
+
'failed_jobs',
|
42
|
+
'Jobs::Tests::TestJobNoRetry._perform',
|
43
|
+
[:raise]).first
|
44
|
+
|
45
|
+
expect(job).to_not be_nil
|
46
|
+
expect(job['last_error']).to_not be_nil
|
47
|
+
end
|
48
|
+
end
|
29
49
|
end
|
30
50
|
|
31
51
|
context "retry" do
|
@@ -67,12 +87,7 @@ describe QueueClassicPlus::CustomWorker do
|
|
67
87
|
end
|
68
88
|
end
|
69
89
|
|
70
|
-
context 'when Rails is defined' do
|
71
|
-
require 'active_job'
|
72
|
-
require 'active_job/arguments'
|
73
|
-
|
74
|
-
before { stub_const('Rails', Struct.new(:logger).new(Logger.new(STDOUT))) }
|
75
|
-
|
90
|
+
context 'when Rails is defined', rails: true do
|
76
91
|
it 'retries' do
|
77
92
|
expect do
|
78
93
|
job_type.enqueue_perform(:foo)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: queue_classic_plus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.0.
|
4
|
+
version: 4.0.0.alpha9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon Mathieu
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-10-
|
13
|
+
date: 2021-10-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: queue_classic
|