delayed_job 3.0.0.pre4 → 3.0.0
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.
- data/README.textile +40 -11
- data/lib/delayed/command.rb +5 -1
- data/lib/delayed/worker.rb +1 -1
- data/lib/delayed_job.rb +11 -12
- data/lib/generators/delayed_job/delayed_job_generator.rb +3 -3
- data/spec/performable_mailer_spec.rb +1 -1
- metadata +33 -54
data/README.textile
CHANGED
@@ -14,27 +14,43 @@ It is a direct extraction from Shopify where the job table is responsible for a
|
|
14
14
|
|
15
15
|
"Follow us on Twitter":https://twitter.com/delayedjob to get updates and notices about new releases.
|
16
16
|
|
17
|
-
|
18
17
|
h2. Installation
|
19
18
|
|
20
|
-
delayed_job
|
19
|
+
delayed_job 3.0.0 only supports Rails 3.0+. See the "2.0 branch":https://github.com/collectiveidea/delayed_job/tree/v2.0 for Rails 2.
|
20
|
+
|
21
|
+
If you plan to use delayed_job with Active Record, add @delayed_job_active_record@ to your @Gemfile@.
|
22
|
+
|
23
|
+
<pre>
|
24
|
+
gem 'delayed_job_active_record'
|
25
|
+
</pre>
|
21
26
|
|
22
|
-
|
27
|
+
If you plan to use delayed_job with Mongoid, add @delayed_job_mongoid@ to your @Gemfile@.
|
23
28
|
|
24
29
|
<pre>
|
25
|
-
gem '
|
30
|
+
gem 'delayed_job_mongoid'
|
26
31
|
</pre>
|
27
32
|
|
28
|
-
|
33
|
+
Run @bundle install@ to install the backend and delayed_job gems.
|
29
34
|
|
30
35
|
h3. Backends
|
31
36
|
|
32
37
|
delayed_job supports multiple backends for storing the job queue. "See the wiki for other backends":http://wiki.github.com/collectiveidea/delayed_job/backends besides Active Record.
|
33
38
|
|
34
|
-
The default is Active Record, which requires a jobs table.
|
39
|
+
The default is Active Record, which requires a jobs table. You can create that table by running the following command:
|
40
|
+
|
41
|
+
<pre>
|
42
|
+
$ script/rails generate delayed_job:active_record
|
43
|
+
$ rake db:migrate
|
44
|
+
</pre>
|
45
|
+
|
46
|
+
h3. Upgrading from 2.x to 3.0.0 on Active Record
|
47
|
+
|
48
|
+
Delayed Job 3.0.0 introduces a new column to the delayed_jobs table.
|
49
|
+
|
50
|
+
If you're upgrading from Delayed Job 2.x, run the upgrade generator to create a migration to add the column.
|
35
51
|
|
36
52
|
<pre>
|
37
|
-
$ script/rails generate delayed_job
|
53
|
+
$ script/rails generate delayed_job:upgrade
|
38
54
|
$ rake db:migrate
|
39
55
|
</pre>
|
40
56
|
|
@@ -113,7 +129,11 @@ Remove the @.deliver@ method to make it work. It's not ideal, but it's the best
|
|
113
129
|
|
114
130
|
h2. Running Jobs
|
115
131
|
|
116
|
-
@script/delayed_job@ can be used to manage a background process which will start working off jobs.
|
132
|
+
@script/delayed_job@ can be used to manage a background process which will start working off jobs.
|
133
|
+
|
134
|
+
To do so, add @gem "daemons"@ to your @Gemfile@ and make sure you've run `script/rails generate delayed_job`.
|
135
|
+
|
136
|
+
You can then do the following:
|
117
137
|
|
118
138
|
<pre>
|
119
139
|
$ RAILS_ENV=production script/delayed_job start
|
@@ -169,7 +189,7 @@ class ParanoidNewsletterJob < NewsletterJob
|
|
169
189
|
end
|
170
190
|
|
171
191
|
def error(job, exception)
|
172
|
-
|
192
|
+
Airbrake.notify(exception)
|
173
193
|
end
|
174
194
|
|
175
195
|
def failure
|
@@ -180,18 +200,19 @@ end
|
|
180
200
|
|
181
201
|
h2. Gory Details
|
182
202
|
|
183
|
-
The library
|
203
|
+
The library revolves around a delayed_jobs table which looks as follows:
|
184
204
|
|
185
205
|
<pre>
|
186
206
|
create_table :delayed_jobs, :force => true do |table|
|
187
207
|
table.integer :priority, :default => 0 # Allows some jobs to jump to the front of the queue
|
188
208
|
table.integer :attempts, :default => 0 # Provides for retries, but still fail eventually.
|
189
209
|
table.text :handler # YAML-encoded string of the object that will do work
|
190
|
-
table.text
|
210
|
+
table.text :last_error # reason for last failure (See Note below)
|
191
211
|
table.datetime :run_at # When to run. Could be Time.zone.now for immediately, or sometime in the future.
|
192
212
|
table.datetime :locked_at # Set when a client is working on this object
|
193
213
|
table.datetime :failed_at # Set when all retries have failed (actually, by default, the record is deleted instead)
|
194
214
|
table.string :locked_by # Who is working on this object (if locked)
|
215
|
+
table.string :queue # The name of the queue this job is in
|
195
216
|
table.timestamps
|
196
217
|
end
|
197
218
|
</pre>
|
@@ -230,6 +251,14 @@ h2. Mailing List
|
|
230
251
|
|
231
252
|
Join us on the "mailing list":http://groups.google.com/group/delayed_job
|
232
253
|
|
254
|
+
h2. Build Status
|
255
|
+
|
256
|
+
"!http://travis-ci.org/collectiveidea/delayed_job.png!":http://travis-ci.org/collectiveidea/delayed_job
|
257
|
+
|
258
|
+
h2. Dependency Status
|
259
|
+
|
260
|
+
"!https://gemnasium.com/collectiveidea/delayed_job.png?travis!":https://gemnasium.com/collectiveidea/delayed_job
|
261
|
+
|
233
262
|
h2. How to contribute
|
234
263
|
|
235
264
|
If you find what looks like a bug:
|
data/lib/delayed/command.rb
CHANGED
data/lib/delayed/worker.rb
CHANGED
@@ -37,7 +37,7 @@ module Delayed
|
|
37
37
|
|
38
38
|
def self.backend=(backend)
|
39
39
|
if backend.is_a? Symbol
|
40
|
-
require "delayed/serialization/#{backend}"
|
40
|
+
require "delayed/serialization/#{backend}"
|
41
41
|
require "delayed/backend/#{backend}"
|
42
42
|
backend = "Delayed::Backend::#{backend.to_s.classify}::Job".constantize
|
43
43
|
end
|
data/lib/delayed_job.rb
CHANGED
@@ -1,22 +1,21 @@
|
|
1
1
|
require 'active_support'
|
2
|
-
|
3
|
-
require
|
4
|
-
require File.dirname(__FILE__) + '/delayed/performable_method'
|
2
|
+
require 'delayed/message_sending'
|
3
|
+
require 'delayed/performable_method'
|
5
4
|
|
6
5
|
# PerformableMailer is compatible with ActionMailer 3 (and possibly 3.1)
|
7
6
|
if defined?(ActionMailer)
|
8
7
|
require 'action_mailer/version'
|
9
|
-
require
|
8
|
+
require 'delayed/performable_mailer' if 3 == ActionMailer::VERSION::MAJOR
|
10
9
|
end
|
11
10
|
|
12
|
-
require
|
13
|
-
require
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
17
|
-
require
|
18
|
-
require
|
19
|
-
require
|
11
|
+
require 'delayed/yaml_ext'
|
12
|
+
require 'delayed/lifecycle'
|
13
|
+
require 'delayed/plugin'
|
14
|
+
require 'delayed/plugins/clear_locks'
|
15
|
+
require 'delayed/backend/base'
|
16
|
+
require 'delayed/worker'
|
17
|
+
require 'delayed/deserialization_error'
|
18
|
+
require 'delayed/railtie' if defined?(Rails::Railtie)
|
20
19
|
|
21
20
|
Object.send(:include, Delayed::MessageSending)
|
22
21
|
Module.send(:include, Delayed::MessageSending::ClassMethods)
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'rails/generators'
|
2
2
|
|
3
3
|
class DelayedJobGenerator < Rails::Generators::Base
|
4
|
-
|
4
|
+
|
5
5
|
self.source_paths << File.join(File.dirname(__FILE__), 'templates')
|
6
|
-
|
6
|
+
|
7
7
|
def create_script_file
|
8
8
|
template 'script', 'script/delayed_job'
|
9
9
|
chmod 'script/delayed_job', 0755
|
10
10
|
end
|
11
|
-
end
|
11
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delayed_job
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 7
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 0
|
9
9
|
- 0
|
10
|
-
|
11
|
-
- 4
|
12
|
-
version: 3.0.0.pre4
|
10
|
+
version: 3.0.0
|
13
11
|
platform: ruby
|
14
12
|
authors:
|
15
13
|
- Matt Griffin
|
@@ -22,28 +20,10 @@ autorequire:
|
|
22
20
|
bindir: bin
|
23
21
|
cert_chain: []
|
24
22
|
|
25
|
-
date: 2011-
|
23
|
+
date: 2011-12-30 00:00:00 Z
|
26
24
|
dependencies:
|
27
25
|
- !ruby/object:Gem::Dependency
|
28
|
-
|
29
|
-
prerelease: false
|
30
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
31
|
-
none: false
|
32
|
-
requirements:
|
33
|
-
- - "="
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
hash: 3
|
36
|
-
segments:
|
37
|
-
- 1
|
38
|
-
- 0
|
39
|
-
- 10
|
40
|
-
version: 1.0.10
|
41
|
-
version_requirements: *id001
|
42
|
-
name: daemons
|
43
|
-
- !ruby/object:Gem::Dependency
|
44
|
-
type: :runtime
|
45
|
-
prerelease: false
|
46
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
26
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
47
27
|
none: false
|
48
28
|
requirements:
|
49
29
|
- - ~>
|
@@ -53,12 +33,12 @@ dependencies:
|
|
53
33
|
- 3
|
54
34
|
- 0
|
55
35
|
version: "3.0"
|
56
|
-
|
36
|
+
requirement: *id001
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
57
39
|
name: activesupport
|
58
40
|
- !ruby/object:Gem::Dependency
|
59
|
-
|
60
|
-
prerelease: false
|
61
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
62
42
|
none: false
|
63
43
|
requirements:
|
64
44
|
- - ~>
|
@@ -68,12 +48,12 @@ dependencies:
|
|
68
48
|
- 3
|
69
49
|
- 0
|
70
50
|
version: "3.0"
|
71
|
-
|
72
|
-
name: activerecord
|
73
|
-
- !ruby/object:Gem::Dependency
|
51
|
+
requirement: *id002
|
74
52
|
type: :development
|
75
53
|
prerelease: false
|
76
|
-
|
54
|
+
name: activerecord
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
77
57
|
none: false
|
78
58
|
requirements:
|
79
59
|
- - ">="
|
@@ -82,12 +62,12 @@ dependencies:
|
|
82
62
|
segments:
|
83
63
|
- 0
|
84
64
|
version: "0"
|
85
|
-
|
86
|
-
name: sqlite3
|
87
|
-
- !ruby/object:Gem::Dependency
|
65
|
+
requirement: *id003
|
88
66
|
type: :development
|
89
67
|
prerelease: false
|
90
|
-
|
68
|
+
name: sqlite3
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
91
71
|
none: false
|
92
72
|
requirements:
|
93
73
|
- - ~>
|
@@ -97,12 +77,12 @@ dependencies:
|
|
97
77
|
- 3
|
98
78
|
- 0
|
99
79
|
version: "3.0"
|
100
|
-
|
101
|
-
name: rails
|
102
|
-
- !ruby/object:Gem::Dependency
|
80
|
+
requirement: *id004
|
103
81
|
type: :development
|
104
82
|
prerelease: false
|
105
|
-
|
83
|
+
name: rails
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
106
86
|
none: false
|
107
87
|
requirements:
|
108
88
|
- - ~>
|
@@ -112,12 +92,12 @@ dependencies:
|
|
112
92
|
- 2
|
113
93
|
- 0
|
114
94
|
version: "2.0"
|
115
|
-
|
116
|
-
name: rspec
|
117
|
-
- !ruby/object:Gem::Dependency
|
95
|
+
requirement: *id005
|
118
96
|
type: :development
|
119
97
|
prerelease: false
|
120
|
-
|
98
|
+
name: rspec
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
121
101
|
none: false
|
122
102
|
requirements:
|
123
103
|
- - ">="
|
@@ -126,15 +106,16 @@ dependencies:
|
|
126
106
|
segments:
|
127
107
|
- 0
|
128
108
|
version: "0"
|
129
|
-
|
109
|
+
requirement: *id006
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
130
112
|
name: rake
|
131
113
|
description: |-
|
132
114
|
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.
|
133
115
|
|
134
116
|
This gem is collectiveidea's fork (http://github.com/collectiveidea/delayed_job).
|
135
117
|
email:
|
136
|
-
-
|
137
|
-
- brandon@opensoul.org
|
118
|
+
- brian@collectiveidea.com
|
138
119
|
executables: []
|
139
120
|
|
140
121
|
extensions: []
|
@@ -207,14 +188,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
207
188
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
208
189
|
none: false
|
209
190
|
requirements:
|
210
|
-
- - "
|
191
|
+
- - ">="
|
211
192
|
- !ruby/object:Gem::Version
|
212
|
-
hash:
|
193
|
+
hash: 3
|
213
194
|
segments:
|
214
|
-
-
|
215
|
-
|
216
|
-
- 1
|
217
|
-
version: 1.3.1
|
195
|
+
- 0
|
196
|
+
version: "0"
|
218
197
|
requirements: []
|
219
198
|
|
220
199
|
rubyforge_project:
|