delayed 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -3
- data/app/models/delayed/job.rb +7 -1
- data/lib/delayed/priority.rb +1 -1
- data/lib/delayed/runnable.rb +1 -1
- data/spec/delayed/job_spec.rb +9 -3
- data/spec/helper.rb +9 -2
- data/spec/yaml_ext_spec.rb +1 -1
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6690016ceeb6764ea0d848c7b8f065f1c5c7587b1a6f519f81f90131c2a77c30
|
4
|
+
data.tar.gz: 83dc7b900584296c9c383ca5171f087da2c71cbbc44e5dca1898e03e2716ab6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d39684e6f3d1fafff2ee632ec243ca5e387f30fa970125f16c456410c5a69ea25fcf906b61d7015e53e40743f9d76133f3054c3fcb781c381c46ea9454d44d42
|
7
|
+
data.tar.gz: '08f057ac20053b5e7a04c98a5b14214ebf43ff0056798a456229482303057c7a68eb08d84d4724d0c3058348ec04d9a3f08db9f1bc5f2dd4528de9161e405ddb'
|
data/README.md
CHANGED
@@ -13,9 +13,11 @@ It supports **postgres**, **mysql**, and **sqlite**, and is designed to be:
|
|
13
13
|
- **Resilient**, with built-in retry mechanisms, exponential back-off, and failed job preservation
|
14
14
|
- **Maintainable**, with robust instrumentation, continuous monitoring, and priority-based alerting
|
15
15
|
|
16
|
-
For an overview of how Betterment uses `delayed` to build resilience into distributed systems,
|
17
|
-
|
18
|
-
|
16
|
+
For an overview of how Betterment uses `delayed` to build resilience into distributed systems, read
|
17
|
+
the
|
18
|
+
[announcement blog post](https://www.betterment.com/resources/delayed-resilient-background-jobs-on-rails/),
|
19
|
+
and/or check out the talk ✨[Can I break this?](https://www.youtube.com/watch?v=TuhS13rBoVY)✨
|
20
|
+
given at RailsConf 2021!
|
19
21
|
|
20
22
|
|
21
23
|
### Why `Delayed`?
|
data/app/models/delayed/job.rb
CHANGED
@@ -163,13 +163,19 @@ module Delayed
|
|
163
163
|
def self.db_time_now
|
164
164
|
if Time.zone
|
165
165
|
Time.zone.now
|
166
|
-
elsif
|
166
|
+
elsif default_timezone == :utc
|
167
167
|
Time.now.utc
|
168
168
|
else
|
169
169
|
Time.current
|
170
170
|
end
|
171
171
|
end
|
172
172
|
|
173
|
+
if ActiveRecord::VERSION::MAJOR >= 7
|
174
|
+
def self.default_timezone
|
175
|
+
ActiveRecord.default_timezone
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
173
179
|
def self.worker_tags(worker)
|
174
180
|
{
|
175
181
|
min_priority: worker.min_priority,
|
data/lib/delayed/priority.rb
CHANGED
@@ -150,7 +150,7 @@ module Delayed
|
|
150
150
|
private
|
151
151
|
|
152
152
|
def respond_to_missing?(method_name, include_private = false)
|
153
|
-
method_name.to_s.end_with?('?') && self.class.names.key?(method_name.to_s[0..-2].to_sym) || super
|
153
|
+
(method_name.to_s.end_with?('?') && self.class.names.key?(method_name.to_s[0..-2].to_sym)) || super
|
154
154
|
end
|
155
155
|
|
156
156
|
def method_missing(method_name, *args)
|
data/lib/delayed/runnable.rb
CHANGED
data/spec/delayed/job_spec.rb
CHANGED
@@ -739,10 +739,16 @@ describe Delayed::Job do
|
|
739
739
|
end
|
740
740
|
end
|
741
741
|
|
742
|
+
if ActiveRecord::VERSION::MAJOR >= 7
|
743
|
+
delegate :default_timezone=, to: ActiveRecord
|
744
|
+
else
|
745
|
+
delegate :default_timezone=, to: ActiveRecord::Base
|
746
|
+
end
|
747
|
+
|
742
748
|
context "db_time_now" do
|
743
749
|
after do
|
744
750
|
Time.zone = nil
|
745
|
-
|
751
|
+
self.default_timezone = :local
|
746
752
|
end
|
747
753
|
|
748
754
|
it "returns time in current time zone if set" do
|
@@ -752,13 +758,13 @@ describe Delayed::Job do
|
|
752
758
|
|
753
759
|
it "returns UTC time if that is the AR default" do
|
754
760
|
Time.zone = nil
|
755
|
-
|
761
|
+
self.default_timezone = :utc
|
756
762
|
expect(described_class.db_time_now.zone).to eq "UTC"
|
757
763
|
end
|
758
764
|
|
759
765
|
it "returns local time if that is the AR default" do
|
760
766
|
Time.zone = "Arizona"
|
761
|
-
|
767
|
+
self.default_timezone = :local
|
762
768
|
expect(described_class.db_time_now.zone).to eq("MST")
|
763
769
|
end
|
764
770
|
end
|
data/spec/helper.rb
CHANGED
@@ -139,8 +139,15 @@ RSpec.configure do |config|
|
|
139
139
|
end
|
140
140
|
end
|
141
141
|
|
142
|
-
|
143
|
-
|
142
|
+
if ActiveRecord::VERSION::MAJOR >= 7
|
143
|
+
require "zeitwerk"
|
144
|
+
loader = Zeitwerk::Loader.new
|
145
|
+
loader.push_dir File.dirname(__FILE__)
|
146
|
+
loader.setup
|
147
|
+
else
|
148
|
+
# Add this directory so the ActiveSupport autoloading works
|
149
|
+
ActiveSupport::Dependencies.autoload_paths << File.dirname(__FILE__)
|
150
|
+
end
|
144
151
|
|
145
152
|
RSpec::Matchers.define :emit_notification do |expected_event_name|
|
146
153
|
attr_reader :actual, :expected
|
data/spec/yaml_ext_spec.rb
CHANGED
@@ -25,7 +25,7 @@ describe 'YAML' do
|
|
25
25
|
it 'autoloads the class of an anonymous struct' do
|
26
26
|
expect {
|
27
27
|
yaml = "--- !ruby/struct\nn: 1\n"
|
28
|
-
object =
|
28
|
+
object = load_with_delayed_visitor(yaml)
|
29
29
|
expect(object).to be_kind_of(Struct)
|
30
30
|
expect(object.n).to eq(1)
|
31
31
|
}.not_to raise_error
|
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
|
+
version: 0.3.0
|
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-
|
22
|
+
date: 2021-10-26 00:00:00.000000000 Z
|
23
23
|
dependencies:
|
24
24
|
- !ruby/object:Gem::Dependency
|
25
25
|
name: activerecord
|
@@ -203,6 +203,20 @@ dependencies:
|
|
203
203
|
- - ">="
|
204
204
|
- !ruby/object:Gem::Version
|
205
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'
|
206
220
|
description: |
|
207
221
|
Delayed is a multi-threaded, SQL-driven ActiveJob backend used at Betterment to process millions
|
208
222
|
of background jobs per day. It supports postgres, mysql, and sqlite, and is designed to be
|
@@ -291,7 +305,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
291
305
|
- !ruby/object:Gem::Version
|
292
306
|
version: '0'
|
293
307
|
requirements: []
|
294
|
-
rubygems_version: 3.
|
308
|
+
rubygems_version: 3.1.6
|
295
309
|
signing_key:
|
296
310
|
specification_version: 4
|
297
311
|
summary: a multi-threaded, SQL-driven ActiveJob backend used at Betterment to process
|