delayed 0.4.0 → 0.5.1

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
  SHA256:
3
- metadata.gz: ec0bc05440d0ea5392480d83c4a3295aecfcad71a47fc48b16de19d356387e8d
4
- data.tar.gz: 2a9b09c4a77f058e8fe322f9b80da8aed4b909b20e3ebbcc33da1277435407d0
3
+ metadata.gz: ace621cdafc8489809a02bcd03d0367f686b7bc1d9eba634263595da038b559f
4
+ data.tar.gz: 25b7047017850106283822f0ce6ef89c93b53e81303591b47772c121b3ec7eb9
5
5
  SHA512:
6
- metadata.gz: 183b8ad1b96cbe2ce987a6a2faa449b90963a898ae2ffccb7f99eacbeb94be5cedae452bc2ed884414e6cfe2a8169481192d9269e2111b80b3be2d805a5cac83
7
- data.tar.gz: 75ad14cf19505ee4b0152797cbee705dbe712939a5e5a0f3bd960a9ddad2c25756e0aedbc8745e70e40d5b634bdf96ef5d175c81f88a86308b524a1f97b2356c
6
+ metadata.gz: abc7e1858bb94efaa865df785abd79818d107952821e83830d8dc16a6415d506f50316a851fb01bf1182753e3f71565381e0b1c54a5ad9481123d46fadc2a283
7
+ data.tar.gz: 7eeaa1c9e12d6fc78345a29f8fb99ef5f6aa956bae5923fe94a0c78358247fbd581f96a07fcf9b33e79ff86ad06f78b357eba14e8d9638f1152fd39d139942ea
@@ -56,6 +56,10 @@ module Delayed
56
56
  end
57
57
  end
58
58
 
59
+ def encode_with(coder)
60
+ coder['job_data'] = @job_data
61
+ end
62
+
59
63
  private
60
64
 
61
65
  def job
@@ -23,6 +23,41 @@ RSpec.describe Delayed::ActiveJobAdapter do
23
23
  ActiveJob::Base.queue_adapter = adapter_was
24
24
  end
25
25
 
26
+ it 'serializes a JobWrapper in the handler with expected fields' do
27
+ Timecop.freeze('2023-01-20T18:52:29Z') do
28
+ JobClass.perform_later
29
+ end
30
+
31
+ Delayed::Job.last.tap do |dj|
32
+ expect(dj.handler.lines).to match [
33
+ "--- !ruby/object:Delayed::JobWrapper\n",
34
+ "job_data:\n",
35
+ " job_class: JobClass\n",
36
+ / job_id: '?#{dj.payload_object.job_id}'?\n/,
37
+ / provider_job_id: ?\n/,
38
+ " queue_name: default\n",
39
+ / priority: ?\n/,
40
+ " arguments: []\n",
41
+ " executions: 0\n",
42
+ (" exception_executions: {}\n" if ActiveJob::VERSION::MAJOR >= 6),
43
+ " locale: en\n",
44
+ (/ timezone: ?\n/ if ActiveJob::VERSION::MAJOR >= 6),
45
+ (/ enqueued_at: '2023-01-20T18:52:29(\.\d+)?Z'\n/ if ActiveJob::VERSION::MAJOR >= 6),
46
+ (/ scheduled_at: ?\n/ if ActiveJob::VERSION::MAJOR >= 7 && ActiveJob::VERSION::MINOR >= 1),
47
+ ].compact
48
+ end
49
+ end
50
+
51
+ it 'deserializes even if the underlying job class is not defined' do
52
+ JobClass.perform_later
53
+
54
+ Delayed::Job.last.tap do |dj|
55
+ dj.handler = dj.handler.gsub('JobClass', 'MissingJobClass')
56
+ expect { dj.payload_object }.not_to raise_error
57
+ expect { dj.payload_object.job_id }.to raise_error(NameError, 'uninitialized constant MissingJobClass')
58
+ end
59
+ end
60
+
26
61
  describe '.set' do
27
62
  it 'supports priority as an integer' do
28
63
  JobClass.set(priority: 43).perform_later
@@ -3,13 +3,13 @@ require "helper"
3
3
  describe ActiveRecord do
4
4
  it "loads classes with non-default primary key" do
5
5
  expect {
6
- YAML.load(Story.create.to_yaml)
6
+ YAML.load_dj(Story.create.to_yaml)
7
7
  }.not_to raise_error
8
8
  end
9
9
 
10
10
  it "loads classes even if not in default scope" do
11
11
  expect {
12
- YAML.load(Story.create(scoped: false).to_yaml)
12
+ YAML.load_dj(Story.create(scoped: false).to_yaml)
13
13
  }.not_to raise_error
14
14
  end
15
15
  end
@@ -57,8 +57,8 @@ describe Delayed::PerformableMailer do
57
57
  job = MyMailer.with(foo: 1, bar: 2).delay.signup('john@example.com', beta_tester: false)
58
58
  expect(job.payload_object.class).to eq(Delayed::PerformableMailer)
59
59
  expect(job.payload_object.object.class).to eq(described_class)
60
- expect(job.payload_object.object.instance_variable_get('@mailer')).to eq(MyMailer)
61
- expect(job.payload_object.object.instance_variable_get('@params')).to eq(foo: 1, bar: 2)
60
+ expect(job.payload_object.object.instance_variable_get(:@mailer)).to eq(MyMailer)
61
+ expect(job.payload_object.object.instance_variable_get(:@params)).to eq(foo: 1, bar: 2)
62
62
  expect(job.payload_object.method_name).to eq(:signup)
63
63
  expect(job.payload_object.args).to eq(['john@example.com'])
64
64
  expect(job.payload_object.kwargs).to eq(beta_tester: false)
data/spec/worker_spec.rb CHANGED
@@ -153,7 +153,7 @@ describe Delayed::Worker do
153
153
  expect(Delayed::Job).to receive(:reserve).exactly(10).times.and_raise(Exception)
154
154
  worker = described_class.new
155
155
  9.times { worker.work_off }
156
- expect(lambda { worker.work_off }).to raise_exception Delayed::FatalBackendError
156
+ expect { worker.work_off }.to raise_exception Delayed::FatalBackendError
157
157
  end
158
158
 
159
159
  it 'allows the backend to attempt recovery from reservation errors' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delayed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Griffith
@@ -19,7 +19,7 @@ authors:
19
19
  autorequire:
20
20
  bindir: bin
21
21
  cert_chain: []
22
- date: 2021-11-30 00:00:00.000000000 Z
22
+ date: 2023-10-11 00:00:00.000000000 Z
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
25
25
  name: activerecord
@@ -49,174 +49,6 @@ dependencies:
49
49
  - - ">="
50
50
  - !ruby/object:Gem::Version
51
51
  version: '0'
52
- - !ruby/object:Gem::Dependency
53
- name: actionmailer
54
- requirement: !ruby/object:Gem::Requirement
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- version: '0'
59
- type: :development
60
- prerelease: false
61
- version_requirements: !ruby/object:Gem::Requirement
62
- requirements:
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- version: '0'
66
- - !ruby/object:Gem::Dependency
67
- name: activejob
68
- requirement: !ruby/object:Gem::Requirement
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- version: '0'
73
- type: :development
74
- prerelease: false
75
- version_requirements: !ruby/object:Gem::Requirement
76
- requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- version: '0'
80
- - !ruby/object:Gem::Dependency
81
- name: activerecord
82
- requirement: !ruby/object:Gem::Requirement
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- version: '0'
87
- type: :development
88
- prerelease: false
89
- version_requirements: !ruby/object:Gem::Requirement
90
- requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- - !ruby/object:Gem::Dependency
95
- name: appraisal
96
- requirement: !ruby/object:Gem::Requirement
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: '0'
101
- type: :development
102
- prerelease: false
103
- version_requirements: !ruby/object:Gem::Requirement
104
- requirements:
105
- - - ">="
106
- - !ruby/object:Gem::Version
107
- version: '0'
108
- - !ruby/object:Gem::Dependency
109
- name: betterlint
110
- requirement: !ruby/object:Gem::Requirement
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- version: '0'
115
- type: :development
116
- prerelease: false
117
- version_requirements: !ruby/object:Gem::Requirement
118
- requirements:
119
- - - ">="
120
- - !ruby/object:Gem::Version
121
- version: '0'
122
- - !ruby/object:Gem::Dependency
123
- name: mysql2
124
- requirement: !ruby/object:Gem::Requirement
125
- requirements:
126
- - - ">="
127
- - !ruby/object:Gem::Version
128
- version: '0'
129
- type: :development
130
- prerelease: false
131
- version_requirements: !ruby/object:Gem::Requirement
132
- requirements:
133
- - - ">="
134
- - !ruby/object:Gem::Version
135
- version: '0'
136
- - !ruby/object:Gem::Dependency
137
- name: pg
138
- requirement: !ruby/object:Gem::Requirement
139
- requirements:
140
- - - ">="
141
- - !ruby/object:Gem::Version
142
- version: '0'
143
- type: :development
144
- prerelease: false
145
- version_requirements: !ruby/object:Gem::Requirement
146
- requirements:
147
- - - ">="
148
- - !ruby/object:Gem::Version
149
- version: '0'
150
- - !ruby/object:Gem::Dependency
151
- name: rake
152
- requirement: !ruby/object:Gem::Requirement
153
- requirements:
154
- - - ">="
155
- - !ruby/object:Gem::Version
156
- version: '0'
157
- type: :development
158
- prerelease: false
159
- version_requirements: !ruby/object:Gem::Requirement
160
- requirements:
161
- - - ">="
162
- - !ruby/object:Gem::Version
163
- version: '0'
164
- - !ruby/object:Gem::Dependency
165
- name: rspec
166
- requirement: !ruby/object:Gem::Requirement
167
- requirements:
168
- - - ">="
169
- - !ruby/object:Gem::Version
170
- version: '0'
171
- type: :development
172
- prerelease: false
173
- version_requirements: !ruby/object:Gem::Requirement
174
- requirements:
175
- - - ">="
176
- - !ruby/object:Gem::Version
177
- version: '0'
178
- - !ruby/object:Gem::Dependency
179
- name: sqlite3
180
- requirement: !ruby/object:Gem::Requirement
181
- requirements:
182
- - - ">="
183
- - !ruby/object:Gem::Version
184
- version: '0'
185
- type: :development
186
- prerelease: false
187
- version_requirements: !ruby/object:Gem::Requirement
188
- requirements:
189
- - - ">="
190
- - !ruby/object:Gem::Version
191
- version: '0'
192
- - !ruby/object:Gem::Dependency
193
- name: timecop
194
- requirement: !ruby/object:Gem::Requirement
195
- requirements:
196
- - - ">="
197
- - !ruby/object:Gem::Version
198
- version: '0'
199
- type: :development
200
- prerelease: false
201
- version_requirements: !ruby/object:Gem::Requirement
202
- requirements:
203
- - - ">="
204
- - !ruby/object:Gem::Version
205
- version: '0'
206
- - !ruby/object:Gem::Dependency
207
- name: zeitwerk
208
- requirement: !ruby/object:Gem::Requirement
209
- requirements:
210
- - - ">="
211
- - !ruby/object:Gem::Version
212
- version: '0'
213
- type: :development
214
- prerelease: false
215
- version_requirements: !ruby/object:Gem::Requirement
216
- requirements:
217
- - - ">="
218
- - !ruby/object:Gem::Version
219
- version: '0'
220
52
  description: |
221
53
  Delayed is a multi-threaded, SQL-driven ActiveJob backend used at Betterment to process millions
222
54
  of background jobs per day. It supports postgres, mysql, and sqlite, and is designed to be
@@ -306,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
306
138
  - !ruby/object:Gem::Version
307
139
  version: '0'
308
140
  requirements: []
309
- rubygems_version: 3.1.6
141
+ rubygems_version: 3.3.5
310
142
  signing_key:
311
143
  specification_version: 4
312
144
  summary: a multi-threaded, SQL-driven ActiveJob backend used at Betterment to process