delayed 0.4.0 → 0.5.1

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