delayed_job 4.1.4 → 4.1.8
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 +5 -5
- data/CHANGELOG.md +19 -0
- data/README.md +13 -12
- data/delayed_job.gemspec +2 -2
- data/lib/delayed/backend/base.rb +2 -1
- data/lib/delayed/backend/shared_spec.rb +2 -1
- data/lib/delayed/psych_ext.rb +7 -1
- data/lib/delayed/railtie.rb +0 -4
- data/lib/delayed/worker.rb +1 -1
- data/lib/delayed_job.rb +9 -6
- data/spec/delayed/backend/test.rb +0 -5
- data/spec/helper.rb +0 -4
- data/spec/performable_mailer_spec.rb +0 -1
- data/spec/psych_ext_spec.rb +23 -1
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3671145ff491daea2d3e26336b54cdae0d4e0293654c11fdcb3a41a516741219
|
4
|
+
data.tar.gz: 1dab4a137c0cec054cd7c73fc395d5a918f5fc7cc619ae3879687ae17b36a439
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 707798d3698ef7e67896381a43b75f03f0b63653c79c514b3e932b53b6883ded11476fe8b5749e44b5722562d7f479fdb6b70f46c9c279fe08fe9eaafb0110a6
|
7
|
+
data.tar.gz: 917341ca90f82622329579ae796378b241822903f5570488e2a6f9dc785028f7e14567c395d5258b409ba8b2c30ee062c0cfeaf985e094b185416296d0e3a18b
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
4.1.8 - 2019-08-16
|
2
|
+
=================
|
3
|
+
* Support for Rails 6.0.0
|
4
|
+
|
5
|
+
4.1.7 - 2019-06-20
|
6
|
+
=================
|
7
|
+
* Fix loading Delayed::PerformableMailer when ActionMailer isn't loaded yet
|
8
|
+
|
9
|
+
4.1.6 - 2019-06-19
|
10
|
+
=================
|
11
|
+
* Properly initialize ActionMailer outside railties (#1077)
|
12
|
+
* Fix Psych load_tags support (#1093)
|
13
|
+
* Replace REMOVED with FAILED in log message (#1048)
|
14
|
+
* Misc doc updates (#1052, #1074, #1064, #1063)
|
15
|
+
|
16
|
+
4.1.5 - 2018-04-13
|
17
|
+
=================
|
18
|
+
* Allow Rails 5.2
|
19
|
+
|
1
20
|
4.1.4 - 2017-12-29
|
2
21
|
=================
|
3
22
|
* Use `yaml_tag` instead of deprecated `yaml_as` (#996)
|
data/README.md
CHANGED
@@ -1,19 +1,17 @@
|
|
1
1
|
**If you're viewing this at https://github.com/collectiveidea/delayed_job,
|
2
2
|
you're reading the documentation for the master branch.
|
3
3
|
[View documentation for the latest release
|
4
|
-
(4.1.
|
4
|
+
(4.1.8).](https://github.com/collectiveidea/delayed_job/tree/v4.1.8)**
|
5
5
|
|
6
6
|
Delayed::Job
|
7
7
|
============
|
8
|
-
[][coveralls]
|
8
|
+
[][gem]
|
9
|
+
[][travis]
|
10
|
+
[][codeclimate]
|
11
|
+
[][coveralls]
|
13
12
|
|
14
13
|
[gem]: https://rubygems.org/gems/delayed_job
|
15
14
|
[travis]: https://travis-ci.org/collectiveidea/delayed_job
|
16
|
-
[gemnasium]: https://gemnasium.com/collectiveidea/delayed_job
|
17
15
|
[codeclimate]: https://codeclimate.com/github/collectiveidea/delayed_job
|
18
16
|
[coveralls]: https://coveralls.io/r/collectiveidea/delayed_job
|
19
17
|
|
@@ -62,16 +60,16 @@ running the following command:
|
|
62
60
|
rails generate delayed_job:active_record
|
63
61
|
rake db:migrate
|
64
62
|
|
65
|
-
For Rails 4.2
|
63
|
+
For Rails 4.2+, see [below](#active-job)
|
66
64
|
|
67
65
|
Development
|
68
66
|
===========
|
69
67
|
In development mode, if you are using Rails 3.1+, your application code will automatically reload every 100 jobs or when the queue finishes.
|
70
68
|
You no longer need to restart Delayed Job every time you update your code in development.
|
71
69
|
|
72
|
-
|
73
|
-
|
74
|
-
|
70
|
+
Active Job
|
71
|
+
==========
|
72
|
+
In Rails 4.2+, set the queue_adapter in config/application.rb
|
75
73
|
|
76
74
|
```ruby
|
77
75
|
config.active_job.queue_adapter = :delayed_job
|
@@ -377,6 +375,9 @@ Hooks
|
|
377
375
|
=====
|
378
376
|
You can define hooks on your job that will be called at different stages in the process:
|
379
377
|
|
378
|
+
|
379
|
+
**NOTE:** If you are using ActiveJob these hooks are **not** available to your jobs. You will need to use ActiveJob's callbacks. You can find details here https://guides.rubyonrails.org/active_job_basics.html#callbacks
|
380
|
+
|
380
381
|
```ruby
|
381
382
|
class ParanoidNewsletterJob < NewsletterJob
|
382
383
|
def enqueue(job)
|
@@ -430,7 +431,7 @@ end
|
|
430
431
|
|
431
432
|
On error, the job is scheduled again in 5 seconds + N ** 4, where N is the number of attempts or using the job's defined `reschedule_at` method.
|
432
433
|
|
433
|
-
The default `Worker.max_attempts` is 25. After this, the job either deleted (default), or left in the database with "failed_at" set.
|
434
|
+
The default `Worker.max_attempts` is 25. After this, the job is either deleted (default), or left in the database with "failed_at" set.
|
434
435
|
With the default of 25 attempts, the last retry will be 20 days later, with the last interval being almost 100 hours.
|
435
436
|
|
436
437
|
The default `Worker.max_run_time` is 4.hours. If your job takes longer than that, another computer could pick it up. It's up to you to
|
data/delayed_job.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
|
-
spec.add_dependency 'activesupport', ['>= 3.0', '<
|
4
|
+
spec.add_dependency 'activesupport', ['>= 3.0', '< 6.1']
|
5
5
|
spec.authors = ['Brandon Keepers', 'Brian Ryckbost', 'Chris Gaffney', 'David Genord II', 'Erik Michaels-Ober', 'Matt Griffin', 'Steve Richert', 'Tobias Lütke']
|
6
6
|
spec.description = 'Delayed_job (or DJ) encapsulates the common pattern of asynchronously executing longer tasks in the background. It is a direct extraction from Shopify where the job table is responsible for a multitude of core tasks.'
|
7
7
|
spec.email = ['brian@collectiveidea.com']
|
@@ -13,5 +13,5 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.require_paths = ['lib']
|
14
14
|
spec.summary = 'Database-backed asynchronous priority queue system -- Extracted from Shopify'
|
15
15
|
spec.test_files = Dir.glob('spec/**/*')
|
16
|
-
spec.version = '4.1.
|
16
|
+
spec.version = '4.1.8'
|
17
17
|
end
|
data/lib/delayed/backend/base.rb
CHANGED
@@ -523,7 +523,8 @@ shared_examples_for 'a delayed_job backend' do
|
|
523
523
|
it 'reloads changed attributes' do
|
524
524
|
story = Story.create(:text => 'hello')
|
525
525
|
job = story.delay.tell
|
526
|
-
story.
|
526
|
+
story.text = 'goodbye'
|
527
|
+
story.save!
|
527
528
|
expect(job.reload.payload_object.object.text).to eq('goodbye')
|
528
529
|
end
|
529
530
|
|
data/lib/delayed/psych_ext.rb
CHANGED
@@ -28,7 +28,13 @@ module Delayed
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def visit_Psych_Nodes_Mapping(object) # rubocop:disable CyclomaticComplexity, MethodName, PerceivedComplexity
|
31
|
-
|
31
|
+
klass = Psych.load_tags[object.tag]
|
32
|
+
if klass
|
33
|
+
# Implementation changed here https://github.com/ruby/psych/commit/2c644e184192975b261a81f486a04defa3172b3f
|
34
|
+
# load_tags used to have class values, now the values are strings
|
35
|
+
klass = resolve_class(klass) if klass.is_a?(String)
|
36
|
+
return revive(klass, object)
|
37
|
+
end
|
32
38
|
|
33
39
|
case object.tag
|
34
40
|
when %r{^!ruby/object}
|
data/lib/delayed/railtie.rb
CHANGED
@@ -4,10 +4,6 @@ require 'rails'
|
|
4
4
|
module Delayed
|
5
5
|
class Railtie < Rails::Railtie
|
6
6
|
initializer :after_initialize do
|
7
|
-
ActiveSupport.on_load(:action_mailer) do
|
8
|
-
ActionMailer::Base.extend(Delayed::DelayMail)
|
9
|
-
end
|
10
|
-
|
11
7
|
Delayed::Worker.logger ||= if defined?(Rails)
|
12
8
|
Rails.logger
|
13
9
|
elsif defined?(RAILS_DEFAULT_LOGGER)
|
data/lib/delayed/worker.rb
CHANGED
@@ -251,7 +251,7 @@ module Delayed
|
|
251
251
|
job.unlock
|
252
252
|
job.save!
|
253
253
|
else
|
254
|
-
job_say job, "
|
254
|
+
job_say job, "FAILED permanently because of #{job.attempts} consecutive failures", 'error'
|
255
255
|
failed(job)
|
256
256
|
end
|
257
257
|
end
|
data/lib/delayed_job.rb
CHANGED
@@ -3,12 +3,6 @@ require 'delayed/compatibility'
|
|
3
3
|
require 'delayed/exceptions'
|
4
4
|
require 'delayed/message_sending'
|
5
5
|
require 'delayed/performable_method'
|
6
|
-
|
7
|
-
if defined?(ActionMailer)
|
8
|
-
require 'action_mailer/version'
|
9
|
-
require 'delayed/performable_mailer'
|
10
|
-
end
|
11
|
-
|
12
6
|
require 'delayed/yaml_ext'
|
13
7
|
require 'delayed/lifecycle'
|
14
8
|
require 'delayed/plugin'
|
@@ -19,5 +13,14 @@ require 'delayed/worker'
|
|
19
13
|
require 'delayed/deserialization_error'
|
20
14
|
require 'delayed/railtie' if defined?(Rails::Railtie)
|
21
15
|
|
16
|
+
ActiveSupport.on_load(:action_mailer) do
|
17
|
+
require 'delayed/performable_mailer'
|
18
|
+
ActionMailer::Base.extend(Delayed::DelayMail)
|
19
|
+
end
|
20
|
+
|
21
|
+
module Delayed
|
22
|
+
autoload :PerformableMailer, 'delayed/performable_mailer'
|
23
|
+
end
|
24
|
+
|
22
25
|
Object.send(:include, Delayed::MessageSending)
|
23
26
|
Module.send(:include, Delayed::MessageSendingClassMethods)
|
data/spec/helper.rb
CHANGED
@@ -14,7 +14,6 @@ require 'logger'
|
|
14
14
|
require 'rspec'
|
15
15
|
|
16
16
|
require 'action_mailer'
|
17
|
-
require 'active_support/dependencies'
|
18
17
|
require 'active_record'
|
19
18
|
|
20
19
|
require 'delayed_job'
|
@@ -45,9 +44,6 @@ Delayed::Worker.backend = :test
|
|
45
44
|
# Add this directory so the ActiveSupport autoloading works
|
46
45
|
ActiveSupport::Dependencies.autoload_paths << File.dirname(__FILE__)
|
47
46
|
|
48
|
-
# Add this to simulate Railtie initializer being executed
|
49
|
-
ActionMailer::Base.extend(Delayed::DelayMail)
|
50
|
-
|
51
47
|
# Used to test interactions between DJ and an ORM
|
52
48
|
ActiveRecord::Base.establish_connection :adapter => 'sqlite3', :database => ':memory:'
|
53
49
|
ActiveRecord::Base.logger = Delayed::Worker.logger
|
data/spec/psych_ext_spec.rb
CHANGED
@@ -3,10 +3,32 @@ require 'helper'
|
|
3
3
|
describe 'Psych::Visitors::ToRuby', :if => defined?(Psych::Visitors::ToRuby) do
|
4
4
|
context BigDecimal do
|
5
5
|
it 'deserializes correctly' do
|
6
|
-
deserialized = YAML.
|
6
|
+
deserialized = YAML.load_dj("--- !ruby/object:BigDecimal 18:0.1337E2\n...\n")
|
7
7
|
|
8
8
|
expect(deserialized).to be_an_instance_of(BigDecimal)
|
9
9
|
expect(deserialized).to eq(BigDecimal('13.37'))
|
10
10
|
end
|
11
11
|
end
|
12
|
+
|
13
|
+
context 'load_tag handling' do
|
14
|
+
# This only broadly works in ruby 2.0 but will cleanly work through load_dj
|
15
|
+
# here because this class is so simple it only touches our extention
|
16
|
+
YAML.load_tags['!ruby/object:RenamedClass'] = SimpleJob
|
17
|
+
# This is how ruby 2.1 and newer works throughout the yaml handling
|
18
|
+
YAML.load_tags['!ruby/object:RenamedString'] = 'SimpleJob'
|
19
|
+
|
20
|
+
it 'deserializes class tag' do
|
21
|
+
deserialized = YAML.load_dj("--- !ruby/object:RenamedClass\ncheck: 12\n")
|
22
|
+
|
23
|
+
expect(deserialized).to be_an_instance_of(SimpleJob)
|
24
|
+
expect(deserialized.instance_variable_get(:@check)).to eq(12)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'deserializes string tag' do
|
28
|
+
deserialized = YAML.load_dj("--- !ruby/object:RenamedString\ncheck: 12\n")
|
29
|
+
|
30
|
+
expect(deserialized).to be_an_instance_of(SimpleJob)
|
31
|
+
expect(deserialized.instance_variable_get(:@check)).to eq(12)
|
32
|
+
end
|
33
|
+
end
|
12
34
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delayed_job
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Keepers
|
@@ -15,7 +15,7 @@ authors:
|
|
15
15
|
autorequire:
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
|
-
date:
|
18
|
+
date: 2019-08-16 00:00:00.000000000 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: activesupport
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
version: '3.0'
|
27
27
|
- - "<"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '6.1'
|
30
30
|
type: :runtime
|
31
31
|
prerelease: false
|
32
32
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -36,7 +36,7 @@ dependencies:
|
|
36
36
|
version: '3.0'
|
37
37
|
- - "<"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
39
|
+
version: '6.1'
|
40
40
|
description: Delayed_job (or DJ) encapsulates the common pattern of asynchronously
|
41
41
|
executing longer tasks in the background. It is a direct extraction from Shopify
|
42
42
|
where the job table is responsible for a multitude of core tasks.
|
@@ -118,8 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
118
|
- !ruby/object:Gem::Version
|
119
119
|
version: '0'
|
120
120
|
requirements: []
|
121
|
-
|
122
|
-
rubygems_version: 2.6.14
|
121
|
+
rubygems_version: 3.0.3
|
123
122
|
signing_key:
|
124
123
|
specification_version: 4
|
125
124
|
summary: Database-backed asynchronous priority queue system -- Extracted from Shopify
|