delayed_job 4.1.4 → 4.1.8

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
- SHA1:
3
- metadata.gz: eb308cfa2fde622a63bd400463d5f5b700fe56a2
4
- data.tar.gz: df36c80e1fc931bb667dafcd7f9710417069c3ab
2
+ SHA256:
3
+ metadata.gz: 3671145ff491daea2d3e26336b54cdae0d4e0293654c11fdcb3a41a516741219
4
+ data.tar.gz: 1dab4a137c0cec054cd7c73fc395d5a918f5fc7cc619ae3879687ae17b36a439
5
5
  SHA512:
6
- metadata.gz: 50954c0e738fd55e38a2c571e6dee55364bee0669d7297ca02f59dff135625ecf13653456a340c5a4e43b2ce24b3875198cb58cb3209c2659adf7494618fd8cd
7
- data.tar.gz: 8c6269d5cbc2185cfdfd88796df32ffa42c13e6f3db5fbe9f5cf4ea5a7c1b668cb2129a4dcade0701e5960566448f4641ad4c3119c3591f274ef5fb85455cd3a
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).](https://github.com/collectiveidea/delayed_job/tree/v4.1.4)**
4
+ (4.1.8).](https://github.com/collectiveidea/delayed_job/tree/v4.1.8)**
5
5
 
6
6
  Delayed::Job
7
7
  ============
8
- [![Gem Version](https://badge.fury.io/rb/delayed_job.png)][gem]
9
- [![Build Status](https://travis-ci.org/collectiveidea/delayed_job.png?branch=master)][travis]
10
- [![Dependency Status](https://gemnasium.com/collectiveidea/delayed_job.png?travis)][gemnasium]
11
- [![Code Climate](https://codeclimate.com/github/collectiveidea/delayed_job.png)][codeclimate]
12
- [![Coverage Status](https://coveralls.io/repos/collectiveidea/delayed_job/badge.png?branch=master)][coveralls]
8
+ [![Gem Version](https://badge.fury.io/rb/delayed_job.svg)][gem]
9
+ [![Build Status](https://travis-ci.org/collectiveidea/delayed_job.svg?branch=master)][travis]
10
+ [![Code Climate](https://codeclimate.com/github/collectiveidea/delayed_job.svg)][codeclimate]
11
+ [![Coverage Status](https://coveralls.io/repos/collectiveidea/delayed_job/badge.svg?branch=master)][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, see [below](#rails-42)
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
- Rails 4.2
73
- =========
74
- Set the queue_adapter in config/application.rb
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', '< 5.2']
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.4'
16
+ spec.version = '4.1.8'
17
17
  end
@@ -133,7 +133,8 @@ module Delayed
133
133
  end
134
134
 
135
135
  def fail!
136
- update_attributes(:failed_at => self.class.db_time_now)
136
+ self.failed_at = self.class.db_time_now
137
+ save!
137
138
  end
138
139
 
139
140
  protected
@@ -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.update_attributes :text => 'goodbye'
526
+ story.text = 'goodbye'
527
+ story.save!
527
528
  expect(job.reload.payload_object.object.text).to eq('goodbye')
528
529
  end
529
530
 
@@ -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
- return revive(Psych.load_tags[object.tag], object) if Psych.load_tags[object.tag]
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}
@@ -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)
@@ -251,7 +251,7 @@ module Delayed
251
251
  job.unlock
252
252
  job.save!
253
253
  else
254
- job_say job, "REMOVED permanently because of #{job.attempts} consecutive failures", 'error'
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)
@@ -87,11 +87,6 @@ module Delayed
87
87
  Time.current
88
88
  end
89
89
 
90
- def update_attributes(attrs = {})
91
- attrs.each { |k, v| send(:"#{k}=", v) }
92
- save
93
- end
94
-
95
90
  def destroy
96
91
  self.class.all.delete(self)
97
92
  end
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
@@ -1,6 +1,5 @@
1
1
  require 'helper'
2
2
 
3
- require 'action_mailer'
4
3
  class MyMailer < ActionMailer::Base
5
4
  def signup(email)
6
5
  mail :to => email, :subject => 'Delaying Emails', :from => 'delayedjob@example.com', :body => 'Delaying Emails Body'
@@ -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.load("--- !ruby/object:BigDecimal 18:0.1337E2\n...\n")
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
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: 2017-12-29 00:00:00.000000000 Z
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: '5.2'
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: '5.2'
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
- rubyforge_project:
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