delayed_job 2.0.7 → 2.0.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.
- data/README.textile +4 -0
- data/lib/delayed/backend/base.rb +1 -4
- data/lib/delayed/command.rb +4 -0
- data/lib/delayed/deserialization_error.rb +4 -0
- data/lib/delayed/worker.rb +16 -6
- data/lib/delayed_job.rb +1 -0
- data/spec/backend/shared_backend_spec.rb +29 -5
- metadata +212 -200
data/README.textile
CHANGED
@@ -41,6 +41,10 @@ script/plugin install git://github.com/collectiveidea/delayed_job.git -r v2.0
|
|
41
41
|
|
42
42
|
After delayed_job is installed, you will need to setup the backend.
|
43
43
|
|
44
|
+
h3. Dependencies
|
45
|
+
|
46
|
+
delayed_job depends upon version 1.0.10 of the daemons gem. delayed_job is incompatible with the newest (1.1.0) daemons gem.
|
47
|
+
|
44
48
|
h2. Backends
|
45
49
|
|
46
50
|
delayed_job supports multiple backends for storing the job queue. There are currently implementations for Active Record, MongoMapper, and DataMapper.
|
data/lib/delayed/backend/base.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
module Delayed
|
2
2
|
module Backend
|
3
|
-
class DeserializationError < StandardError
|
4
|
-
end
|
5
|
-
|
6
3
|
module Base
|
7
4
|
def self.included(base)
|
8
5
|
base.extend ClassMethods
|
@@ -107,7 +104,7 @@ module Delayed
|
|
107
104
|
|
108
105
|
raise DeserializationError,
|
109
106
|
'Job failed to load: Unknown handler. Try to manually require the appropriate file.'
|
110
|
-
rescue TypeError, LoadError, NameError => e
|
107
|
+
rescue TypeError, LoadError, NameError, ArgumentError => e
|
111
108
|
raise DeserializationError,
|
112
109
|
"Job failed to load: #{e.message}. Try to manually require the required file."
|
113
110
|
end
|
data/lib/delayed/command.rb
CHANGED
@@ -47,6 +47,9 @@ module Delayed
|
|
47
47
|
opts.on('--sleep-delay N', "Amount of time to sleep when no jobs are found") do |n|
|
48
48
|
@options[:sleep_delay] = n
|
49
49
|
end
|
50
|
+
opts.on('-p', '--prefix NAME', "String to be prefixed to worker process names") do |prefix|
|
51
|
+
@options[:prefix] = prefix
|
52
|
+
end
|
50
53
|
end
|
51
54
|
@args = opts.parse!(args)
|
52
55
|
end
|
@@ -76,6 +79,7 @@ module Delayed
|
|
76
79
|
|
77
80
|
def run_process(process_name, dir)
|
78
81
|
Daemons.run_proc(process_name, :dir => dir, :dir_mode => :normal, :monitor => @monitor, :ARGV => @args) do |*args|
|
82
|
+
$0 = File.join @options[:prefix], process_name if @options[:prefix]
|
79
83
|
run process_name
|
80
84
|
end
|
81
85
|
end
|
data/lib/delayed/worker.rb
CHANGED
@@ -124,8 +124,11 @@ module Delayed
|
|
124
124
|
end
|
125
125
|
say "#{job.name} completed after %.4f" % runtime
|
126
126
|
return true # did work
|
127
|
-
rescue
|
128
|
-
|
127
|
+
rescue DeserializationError => error
|
128
|
+
job.last_error = "{#{error.message}\n#{error.backtrace.join('\n')}"
|
129
|
+
failed(job)
|
130
|
+
rescue Exception => error
|
131
|
+
handle_failed_job(job, error)
|
129
132
|
return false # work failed
|
130
133
|
end
|
131
134
|
|
@@ -138,14 +141,21 @@ module Delayed
|
|
138
141
|
job.save!
|
139
142
|
else
|
140
143
|
say "PERMANENTLY removing #{job.name} because of #{job.attempts} consecutive failures.", Logger::INFO
|
144
|
+
failed(job)
|
145
|
+
end
|
146
|
+
end
|
141
147
|
|
148
|
+
def failed(job)
|
149
|
+
begin
|
142
150
|
if job.payload_object.respond_to? :on_permanent_failure
|
143
|
-
|
144
|
-
|
151
|
+
say "Running on_permanent_failure hook"
|
152
|
+
job.payload_object.on_permanent_failure
|
145
153
|
end
|
146
|
-
|
147
|
-
|
154
|
+
rescue DeserializationError
|
155
|
+
# do nothing
|
148
156
|
end
|
157
|
+
|
158
|
+
self.class.destroy_failed_jobs ? job.destroy : job.update_attributes(:failed_at => Delayed::Job.db_time_now)
|
149
159
|
end
|
150
160
|
|
151
161
|
def say(text, level = Logger::INFO)
|
data/lib/delayed_job.rb
CHANGED
@@ -4,6 +4,7 @@ require File.dirname(__FILE__) + '/delayed/message_sending'
|
|
4
4
|
require File.dirname(__FILE__) + '/delayed/performable_method'
|
5
5
|
require File.dirname(__FILE__) + '/delayed/backend/base'
|
6
6
|
require File.dirname(__FILE__) + '/delayed/worker'
|
7
|
+
require File.dirname(__FILE__) + '/delayed/deserialization_error'
|
7
8
|
require File.dirname(__FILE__) + '/delayed/railtie' if defined?(::Rails::Railtie)
|
8
9
|
|
9
10
|
Object.send(:include, Delayed::MessageSending)
|
@@ -52,31 +52,36 @@ shared_examples_for 'a backend' do
|
|
52
52
|
|
53
53
|
it "should raise an DeserializationError when the job class is totally unknown" do
|
54
54
|
job = @backend.new :handler => "--- !ruby/object:JobThatDoesNotExist {}"
|
55
|
-
lambda { job.payload_object.perform }.should raise_error(Delayed::
|
55
|
+
lambda { job.payload_object.perform }.should raise_error(Delayed::DeserializationError)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should raise an DeserializationError when the job is badly encoded" do
|
59
|
+
job = @backend.new :handler => "--- !ruby/object:SimpleJob {"
|
60
|
+
lambda { job.payload_object.perform }.should raise_error(Delayed::DeserializationError)
|
56
61
|
end
|
57
62
|
|
58
63
|
it "should try to load the class when it is unknown at the time of the deserialization" do
|
59
64
|
job = @backend.new :handler => "--- !ruby/object:JobThatDoesNotExist {}"
|
60
65
|
job.should_receive(:attempt_to_load).with('JobThatDoesNotExist').and_return(true)
|
61
|
-
lambda { job.payload_object.perform }.should raise_error(Delayed::
|
66
|
+
lambda { job.payload_object.perform }.should raise_error(Delayed::DeserializationError)
|
62
67
|
end
|
63
68
|
|
64
69
|
it "should try include the namespace when loading unknown objects" do
|
65
70
|
job = @backend.new :handler => "--- !ruby/object:Delayed::JobThatDoesNotExist {}"
|
66
71
|
job.should_receive(:attempt_to_load).with('Delayed::JobThatDoesNotExist').and_return(true)
|
67
|
-
lambda { job.payload_object.perform }.should raise_error(Delayed::
|
72
|
+
lambda { job.payload_object.perform }.should raise_error(Delayed::DeserializationError)
|
68
73
|
end
|
69
74
|
|
70
75
|
it "should also try to load structs when they are unknown (raises TypeError)" do
|
71
76
|
job = @backend.new :handler => "--- !ruby/struct:JobThatDoesNotExist {}"
|
72
77
|
job.should_receive(:attempt_to_load).with('JobThatDoesNotExist').and_return(true)
|
73
|
-
lambda { job.payload_object.perform }.should raise_error(Delayed::
|
78
|
+
lambda { job.payload_object.perform }.should raise_error(Delayed::DeserializationError)
|
74
79
|
end
|
75
80
|
|
76
81
|
it "should try include the namespace when loading unknown structs" do
|
77
82
|
job = @backend.new :handler => "--- !ruby/struct:Delayed::JobThatDoesNotExist {}"
|
78
83
|
job.should_receive(:attempt_to_load).with('Delayed::JobThatDoesNotExist').and_return(true)
|
79
|
-
lambda { job.payload_object.perform }.should raise_error(Delayed::
|
84
|
+
lambda { job.payload_object.perform }.should raise_error(Delayed::DeserializationError)
|
80
85
|
end
|
81
86
|
|
82
87
|
describe "find_available" do
|
@@ -314,4 +319,23 @@ shared_examples_for 'a backend' do
|
|
314
319
|
@job.max_attempts.should == 99
|
315
320
|
end
|
316
321
|
end
|
322
|
+
|
323
|
+
describe "worker integration" do
|
324
|
+
before do
|
325
|
+
@worker = Delayed::Worker.new(:max_priority => nil, :min_priority => nil, :quiet => true)
|
326
|
+
end
|
327
|
+
|
328
|
+
describe "running a job" do
|
329
|
+
|
330
|
+
context "when the job raises a deserialization error" do
|
331
|
+
it "should mark the job as failed" do
|
332
|
+
Delayed::Worker.destroy_failed_jobs = false
|
333
|
+
job = described_class.create! :handler => "--- !ruby/object:JobThatDoesNotExist {}"
|
334
|
+
@worker.work_off
|
335
|
+
job.reload
|
336
|
+
job.failed_at.should_not be_nil
|
337
|
+
end
|
338
|
+
end
|
339
|
+
end
|
340
|
+
end
|
317
341
|
end
|
metadata
CHANGED
@@ -1,242 +1,256 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: delayed_job
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.8
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 2
|
8
|
-
- 0
|
9
|
-
- 7
|
10
|
-
version: 2.0.7
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Chris Gaffney
|
14
9
|
- Brandon Keepers
|
15
|
-
-
|
10
|
+
- Tobias Lütke
|
16
11
|
autorequire:
|
17
12
|
bindir: bin
|
18
13
|
cert_chain: []
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
dependencies:
|
23
|
-
- !ruby/object:Gem::Dependency
|
24
|
-
prerelease: false
|
25
|
-
type: :runtime
|
14
|
+
date: 2013-05-28 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
26
17
|
name: daemons
|
27
|
-
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
28
19
|
none: false
|
29
|
-
requirements:
|
30
|
-
- -
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
hash: 3
|
33
|
-
segments:
|
34
|
-
- 1
|
35
|
-
- 0
|
36
|
-
- 10
|
20
|
+
requirements:
|
21
|
+
- - '='
|
22
|
+
- !ruby/object:Gem::Version
|
37
23
|
version: 1.0.10
|
38
|
-
requirement: *id001
|
39
|
-
- !ruby/object:Gem::Dependency
|
40
|
-
prerelease: false
|
41
24
|
type: :runtime
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
28
|
+
requirements:
|
29
|
+
- - '='
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 1.0.10
|
32
|
+
- !ruby/object:Gem::Dependency
|
42
33
|
name: activesupport
|
43
|
-
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
44
35
|
none: false
|
45
|
-
requirements:
|
36
|
+
requirements:
|
46
37
|
- - ~>
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
|
49
|
-
|
50
|
-
- 2
|
51
|
-
- 0
|
52
|
-
version: "2.0"
|
53
|
-
requirement: *id002
|
54
|
-
- !ruby/object:Gem::Dependency
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '2.0'
|
40
|
+
type: :runtime
|
55
41
|
prerelease: false
|
56
|
-
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.0'
|
48
|
+
- !ruby/object:Gem::Dependency
|
57
49
|
name: rspec
|
58
|
-
|
50
|
+
requirement: !ruby/object:Gem::Requirement
|
59
51
|
none: false
|
60
|
-
requirements:
|
52
|
+
requirements:
|
61
53
|
- - ~>
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
|
64
|
-
segments:
|
65
|
-
- 1
|
66
|
-
- 0
|
67
|
-
version: "1.0"
|
68
|
-
requirement: *id003
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
prerelease: false
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '1.0'
|
71
56
|
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ~>
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '1.0'
|
64
|
+
- !ruby/object:Gem::Dependency
|
72
65
|
name: rake
|
73
|
-
|
66
|
+
requirement: !ruby/object:Gem::Requirement
|
74
67
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
|
79
|
-
segments:
|
80
|
-
- 0
|
81
|
-
version: "0"
|
82
|
-
requirement: *id004
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
prerelease: false
|
68
|
+
requirements:
|
69
|
+
- - '='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: 0.8.7
|
85
72
|
type: :development
|
73
|
+
prerelease: false
|
74
|
+
version_requirements: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - '='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 0.8.7
|
80
|
+
- !ruby/object:Gem::Dependency
|
86
81
|
name: rails
|
87
|
-
|
82
|
+
requirement: !ruby/object:Gem::Requirement
|
88
83
|
none: false
|
89
|
-
requirements:
|
84
|
+
requirements:
|
90
85
|
- - ~>
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
|
93
|
-
segments:
|
94
|
-
- 2
|
95
|
-
- 3
|
96
|
-
version: "2.3"
|
97
|
-
requirement: *id005
|
98
|
-
- !ruby/object:Gem::Dependency
|
99
|
-
prerelease: false
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '2.3'
|
100
88
|
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
92
|
+
requirements:
|
93
|
+
- - ~>
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '2.3'
|
96
|
+
- !ruby/object:Gem::Dependency
|
101
97
|
name: sqlite3
|
102
|
-
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
103
99
|
none: false
|
104
|
-
requirements:
|
105
|
-
- -
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
|
108
|
-
segments:
|
109
|
-
- 0
|
110
|
-
version: "0"
|
111
|
-
requirement: *id006
|
112
|
-
- !ruby/object:Gem::Dependency
|
113
|
-
prerelease: false
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
114
104
|
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
108
|
+
requirements:
|
109
|
+
- - ! '>='
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
115
113
|
name: mysql
|
116
|
-
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
117
115
|
none: false
|
118
|
-
requirements:
|
119
|
-
- -
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
|
122
|
-
segments:
|
123
|
-
- 0
|
124
|
-
version: "0"
|
125
|
-
requirement: *id007
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
prerelease: false
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
128
120
|
type: :development
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
none: false
|
124
|
+
requirements:
|
125
|
+
- - ! '>='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
- !ruby/object:Gem::Dependency
|
129
129
|
name: mongo_mapper
|
130
|
-
|
130
|
+
requirement: !ruby/object:Gem::Requirement
|
131
131
|
none: false
|
132
|
-
requirements:
|
132
|
+
requirements:
|
133
133
|
- - ~>
|
134
|
-
- !ruby/object:Gem::Version
|
135
|
-
hash: 63
|
136
|
-
segments:
|
137
|
-
- 0
|
138
|
-
- 8
|
139
|
-
- 0
|
134
|
+
- !ruby/object:Gem::Version
|
140
135
|
version: 0.8.0
|
141
|
-
requirement: *id008
|
142
|
-
- !ruby/object:Gem::Dependency
|
143
|
-
prerelease: false
|
144
136
|
type: :development
|
137
|
+
prerelease: false
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
139
|
+
none: false
|
140
|
+
requirements:
|
141
|
+
- - ~>
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: 0.8.0
|
144
|
+
- !ruby/object:Gem::Dependency
|
145
145
|
name: dm-core
|
146
|
-
|
146
|
+
requirement: !ruby/object:Gem::Requirement
|
147
147
|
none: false
|
148
|
-
requirements:
|
149
|
-
- -
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
|
152
|
-
segments:
|
153
|
-
- 0
|
154
|
-
version: "0"
|
155
|
-
requirement: *id009
|
156
|
-
- !ruby/object:Gem::Dependency
|
157
|
-
prerelease: false
|
148
|
+
requirements:
|
149
|
+
- - ! '>='
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
158
152
|
type: :development
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
none: false
|
156
|
+
requirements:
|
157
|
+
- - ! '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
- !ruby/object:Gem::Dependency
|
159
161
|
name: dm-observer
|
160
|
-
|
162
|
+
requirement: !ruby/object:Gem::Requirement
|
161
163
|
none: false
|
162
|
-
requirements:
|
163
|
-
- -
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
|
166
|
-
segments:
|
167
|
-
- 0
|
168
|
-
version: "0"
|
169
|
-
requirement: *id010
|
170
|
-
- !ruby/object:Gem::Dependency
|
171
|
-
prerelease: false
|
164
|
+
requirements:
|
165
|
+
- - ! '>='
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '0'
|
172
168
|
type: :development
|
169
|
+
prerelease: false
|
170
|
+
version_requirements: !ruby/object:Gem::Requirement
|
171
|
+
none: false
|
172
|
+
requirements:
|
173
|
+
- - ! '>='
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
- !ruby/object:Gem::Dependency
|
173
177
|
name: dm-aggregates
|
174
|
-
|
178
|
+
requirement: !ruby/object:Gem::Requirement
|
175
179
|
none: false
|
176
|
-
requirements:
|
177
|
-
- -
|
178
|
-
- !ruby/object:Gem::Version
|
179
|
-
|
180
|
-
segments:
|
181
|
-
- 0
|
182
|
-
version: "0"
|
183
|
-
requirement: *id011
|
184
|
-
- !ruby/object:Gem::Dependency
|
185
|
-
prerelease: false
|
180
|
+
requirements:
|
181
|
+
- - ! '>='
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: '0'
|
186
184
|
type: :development
|
185
|
+
prerelease: false
|
186
|
+
version_requirements: !ruby/object:Gem::Requirement
|
187
|
+
none: false
|
188
|
+
requirements:
|
189
|
+
- - ! '>='
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '0'
|
192
|
+
- !ruby/object:Gem::Dependency
|
187
193
|
name: dm-validations
|
188
|
-
|
194
|
+
requirement: !ruby/object:Gem::Requirement
|
189
195
|
none: false
|
190
|
-
requirements:
|
191
|
-
- -
|
192
|
-
- !ruby/object:Gem::Version
|
193
|
-
|
194
|
-
segments:
|
195
|
-
- 0
|
196
|
-
version: "0"
|
197
|
-
requirement: *id012
|
198
|
-
- !ruby/object:Gem::Dependency
|
199
|
-
prerelease: false
|
196
|
+
requirements:
|
197
|
+
- - ! '>='
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '0'
|
200
200
|
type: :development
|
201
|
+
prerelease: false
|
202
|
+
version_requirements: !ruby/object:Gem::Requirement
|
203
|
+
none: false
|
204
|
+
requirements:
|
205
|
+
- - ! '>='
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '0'
|
208
|
+
- !ruby/object:Gem::Dependency
|
201
209
|
name: do_sqlite3
|
202
|
-
|
210
|
+
requirement: !ruby/object:Gem::Requirement
|
203
211
|
none: false
|
204
|
-
requirements:
|
205
|
-
- -
|
206
|
-
- !ruby/object:Gem::Version
|
207
|
-
|
208
|
-
segments:
|
209
|
-
- 0
|
210
|
-
version: "0"
|
211
|
-
requirement: *id013
|
212
|
-
- !ruby/object:Gem::Dependency
|
213
|
-
prerelease: false
|
212
|
+
requirements:
|
213
|
+
- - ! '>='
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
214
216
|
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
none: false
|
220
|
+
requirements:
|
221
|
+
- - ! '>='
|
222
|
+
- !ruby/object:Gem::Version
|
223
|
+
version: '0'
|
224
|
+
- !ruby/object:Gem::Dependency
|
215
225
|
name: database_cleaner
|
216
|
-
|
226
|
+
requirement: !ruby/object:Gem::Requirement
|
227
|
+
none: false
|
228
|
+
requirements:
|
229
|
+
- - ! '>='
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: '0'
|
232
|
+
type: :development
|
233
|
+
prerelease: false
|
234
|
+
version_requirements: !ruby/object:Gem::Requirement
|
217
235
|
none: false
|
218
|
-
requirements:
|
219
|
-
- -
|
220
|
-
- !ruby/object:Gem::Version
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
This gem is collectiveidea's fork (http://github.com/collectiveidea/delayed_job).
|
230
|
-
email:
|
236
|
+
requirements:
|
237
|
+
- - ! '>='
|
238
|
+
- !ruby/object:Gem::Version
|
239
|
+
version: '0'
|
240
|
+
description: ! 'Delayed_job (or DJ) encapsulates the common pattern of asynchronously
|
241
|
+
executing longer tasks in the background. It is a direct extraction from Shopify
|
242
|
+
where the job table is responsible for a multitude of core tasks.
|
243
|
+
|
244
|
+
|
245
|
+
This gem is collectiveidea''s fork (http://github.com/collectiveidea/delayed_job).'
|
246
|
+
email:
|
231
247
|
- chris@collectiveidea.com
|
232
248
|
- brandon@opensoul.org
|
233
249
|
executables: []
|
234
|
-
|
235
250
|
extensions: []
|
236
|
-
|
237
|
-
extra_rdoc_files:
|
251
|
+
extra_rdoc_files:
|
238
252
|
- README.textile
|
239
|
-
files:
|
253
|
+
files:
|
240
254
|
- contrib/delayed_job.monitrc
|
241
255
|
- contrib/delayed_job_multiple.monitrc
|
242
256
|
- lib/delayed/backend/active_record.rb
|
@@ -244,6 +258,7 @@ files:
|
|
244
258
|
- lib/delayed/backend/data_mapper.rb
|
245
259
|
- lib/delayed/backend/mongo_mapper.rb
|
246
260
|
- lib/delayed/command.rb
|
261
|
+
- lib/delayed/deserialization_error.rb
|
247
262
|
- lib/delayed/message_sending.rb
|
248
263
|
- lib/delayed/performable_method.rb
|
249
264
|
- lib/delayed/railtie.rb
|
@@ -273,44 +288,41 @@ files:
|
|
273
288
|
- tasks/jobs.rake
|
274
289
|
- MIT-LICENSE
|
275
290
|
- README.textile
|
276
|
-
has_rdoc: true
|
277
291
|
homepage: http://github.com/collectiveidea/delayed_job
|
278
292
|
licenses: []
|
279
|
-
|
280
293
|
post_install_message:
|
281
|
-
rdoc_options:
|
294
|
+
rdoc_options:
|
282
295
|
- --main
|
283
296
|
- README.textile
|
284
297
|
- --inline-source
|
285
298
|
- --line-numbers
|
286
|
-
require_paths:
|
299
|
+
require_paths:
|
287
300
|
- lib
|
288
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
301
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
289
302
|
none: false
|
290
|
-
requirements:
|
291
|
-
- -
|
292
|
-
- !ruby/object:Gem::Version
|
293
|
-
|
294
|
-
segments:
|
303
|
+
requirements:
|
304
|
+
- - ! '>='
|
305
|
+
- !ruby/object:Gem::Version
|
306
|
+
version: '0'
|
307
|
+
segments:
|
295
308
|
- 0
|
296
|
-
|
297
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
309
|
+
hash: -534603219747213173
|
310
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
298
311
|
none: false
|
299
|
-
requirements:
|
300
|
-
- -
|
301
|
-
- !ruby/object:Gem::Version
|
302
|
-
|
303
|
-
segments:
|
312
|
+
requirements:
|
313
|
+
- - ! '>='
|
314
|
+
- !ruby/object:Gem::Version
|
315
|
+
version: '0'
|
316
|
+
segments:
|
304
317
|
- 0
|
305
|
-
|
318
|
+
hash: -534603219747213173
|
306
319
|
requirements: []
|
307
|
-
|
308
320
|
rubyforge_project:
|
309
|
-
rubygems_version: 1.
|
321
|
+
rubygems_version: 1.8.23
|
310
322
|
signing_key:
|
311
323
|
specification_version: 3
|
312
324
|
summary: Database-backed asynchronous priority queue system -- Extracted from Shopify
|
313
|
-
test_files:
|
325
|
+
test_files:
|
314
326
|
- spec/backend/active_record_job_spec.rb
|
315
327
|
- spec/backend/data_mapper_job_spec.rb
|
316
328
|
- spec/backend/mongo_mapper_job_spec.rb
|