delayed_job_hooked 2.1.5
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/MIT-LICENSE +20 -0
- data/README.textile +243 -0
- data/contrib/delayed_job.monitrc +14 -0
- data/contrib/delayed_job_multiple.monitrc +23 -0
- data/lib/delayed/backend/active_record.rb +82 -0
- data/lib/delayed/backend/base.rb +128 -0
- data/lib/delayed/backend/shared_spec.rb +485 -0
- data/lib/delayed/command.rb +112 -0
- data/lib/delayed/deserialization_error.rb +4 -0
- data/lib/delayed/message_sending.rb +54 -0
- data/lib/delayed/performable_mailer.rb +21 -0
- data/lib/delayed/performable_method.rb +31 -0
- data/lib/delayed/railtie.rb +18 -0
- data/lib/delayed/recipes.rb +50 -0
- data/lib/delayed/serialization/active_record.rb +13 -0
- data/lib/delayed/tasks.rb +11 -0
- data/lib/delayed/worker.rb +182 -0
- data/lib/delayed/yaml_ext.rb +41 -0
- data/lib/delayed_job.rb +13 -0
- data/lib/generators/delayed_job/delayed_job_generator.rb +34 -0
- data/lib/generators/delayed_job/templates/migration.rb +21 -0
- data/lib/generators/delayed_job/templates/script +5 -0
- data/recipes/delayed_job.rb +1 -0
- data/spec/active_record_job_spec.rb +36 -0
- data/spec/autoloaded/clazz.rb +7 -0
- data/spec/autoloaded/struct.rb +7 -0
- data/spec/database.yml +4 -0
- data/spec/message_sending_spec.rb +116 -0
- data/spec/performable_mailer_spec.rb +46 -0
- data/spec/performable_method_spec.rb +64 -0
- data/spec/sample_jobs.rb +73 -0
- data/spec/spec_helper.rb +58 -0
- data/spec/worker_spec.rb +37 -0
- data/spec/yaml_ext_spec.rb +31 -0
- metadata +221 -0
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'rspec'
|
6
|
+
require 'logger'
|
7
|
+
|
8
|
+
require 'rails'
|
9
|
+
require 'active_record'
|
10
|
+
require 'action_mailer'
|
11
|
+
|
12
|
+
require 'delayed_job'
|
13
|
+
require 'delayed/backend/shared_spec'
|
14
|
+
|
15
|
+
Delayed::Worker.logger = Logger.new('/tmp/dj.log')
|
16
|
+
ENV['RAILS_ENV'] = 'test'
|
17
|
+
|
18
|
+
config = YAML.load(File.read('spec/database.yml'))
|
19
|
+
ActiveRecord::Base.configurations = {'test' => config['mysql']}
|
20
|
+
ActiveRecord::Base.establish_connection
|
21
|
+
ActiveRecord::Base.logger = Delayed::Worker.logger
|
22
|
+
ActiveRecord::Migration.verbose = false
|
23
|
+
|
24
|
+
ActiveRecord::Schema.define do
|
25
|
+
create_table :delayed_jobs, :force => true do |table|
|
26
|
+
table.integer :priority, :default => 0
|
27
|
+
table.integer :attempts, :default => 0
|
28
|
+
table.text :handler
|
29
|
+
table.text :last_error
|
30
|
+
table.datetime :run_at
|
31
|
+
table.datetime :locked_at
|
32
|
+
table.datetime :failed_at
|
33
|
+
table.string :locked_by
|
34
|
+
table.timestamps
|
35
|
+
end
|
36
|
+
|
37
|
+
add_index :delayed_jobs, [:priority, :run_at], :name => 'delayed_jobs_priority'
|
38
|
+
|
39
|
+
create_table :stories, :force => true do |table|
|
40
|
+
table.string :text
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Purely useful for test cases...
|
45
|
+
class Story < ActiveRecord::Base
|
46
|
+
def tell; text; end
|
47
|
+
def whatever(n, _); tell*n; end
|
48
|
+
|
49
|
+
handle_asynchronously :whatever
|
50
|
+
end
|
51
|
+
|
52
|
+
Delayed::Worker.backend = :active_record
|
53
|
+
|
54
|
+
# Add this directory so the ActiveSupport autoloading works
|
55
|
+
ActiveSupport::Dependencies.autoload_paths << File.dirname(__FILE__)
|
56
|
+
|
57
|
+
# Add this to simulate Railtie initializer being executed
|
58
|
+
ActionMailer::Base.send(:extend, Delayed::DelayMail)
|
data/spec/worker_spec.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Delayed::Worker do
|
4
|
+
describe "backend=" do
|
5
|
+
before do
|
6
|
+
@clazz = Class.new
|
7
|
+
Delayed::Worker.backend = @clazz
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should set the Delayed::Job constant to the backend" do
|
11
|
+
Delayed::Job.should == @clazz
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should set backend with a symbol" do
|
15
|
+
Delayed::Worker.backend = :active_record
|
16
|
+
Delayed::Worker.backend.should == Delayed::Backend::ActiveRecord::Job
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "guess_backend" do
|
21
|
+
after do
|
22
|
+
Delayed::Worker.backend = :active_record
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should set to active_record if nil" do
|
26
|
+
Delayed::Worker.backend = nil
|
27
|
+
lambda {
|
28
|
+
Delayed::Worker.guess_backend
|
29
|
+
}.should change { Delayed::Worker.backend }.to(Delayed::Backend::ActiveRecord::Job)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should not override the existing backend" do
|
33
|
+
Delayed::Worker.backend = Class.new
|
34
|
+
lambda { Delayed::Worker.guess_backend }.should_not change { Delayed::Worker.backend }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe YAML do
|
4
|
+
it "should autoload classes that are unknown at runtime" do
|
5
|
+
lambda {
|
6
|
+
obj = YAML.load("--- !ruby/object:Autoloaded::Clazz {}")
|
7
|
+
obj.class.to_s.should == 'Autoloaded::Clazz'
|
8
|
+
}.should_not raise_error
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should autoload structs that are unknown at runtime" do
|
12
|
+
lambda {
|
13
|
+
obj = YAML.load("--- !ruby/struct:Autoloaded::Struct {}")
|
14
|
+
obj.class.to_s.should == 'Autoloaded::Struct'
|
15
|
+
}.should_not raise_error
|
16
|
+
end
|
17
|
+
|
18
|
+
# As we're overriding some of Yaml's internals it is best that our changes
|
19
|
+
# don't impact other places where Yaml is used. Or at least don't make it
|
20
|
+
# look like the exception is caused by DJ
|
21
|
+
it "should not raise exception on poorly formatted yaml" do
|
22
|
+
lambda do
|
23
|
+
YAML.load(<<-EOYAML
|
24
|
+
default:
|
25
|
+
<<: *login
|
26
|
+
EOYAML
|
27
|
+
)
|
28
|
+
end.should_not raise_error
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,221 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: delayed_job_hooked
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 1
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 2
|
8
|
+
- 1
|
9
|
+
- 5
|
10
|
+
version: 2.1.5
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Chris Gaffney
|
14
|
+
- Brandon Keepers
|
15
|
+
- "Tobias L\xC3\xBCtke"
|
16
|
+
- Joel Basson
|
17
|
+
autorequire:
|
18
|
+
bindir: bin
|
19
|
+
cert_chain: []
|
20
|
+
|
21
|
+
date: 2011-03-14 00:00:00 +02:00
|
22
|
+
default_executable:
|
23
|
+
dependencies:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: daemons
|
26
|
+
prerelease: false
|
27
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
hash: 3
|
33
|
+
segments:
|
34
|
+
- 0
|
35
|
+
version: "0"
|
36
|
+
type: :runtime
|
37
|
+
version_requirements: *id001
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: activesupport
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
hash: 7
|
47
|
+
segments:
|
48
|
+
- 3
|
49
|
+
- 0
|
50
|
+
version: "3.0"
|
51
|
+
type: :runtime
|
52
|
+
version_requirements: *id002
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: rails
|
55
|
+
prerelease: false
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
hash: 7
|
62
|
+
segments:
|
63
|
+
- 3
|
64
|
+
- 0
|
65
|
+
version: "3.0"
|
66
|
+
type: :development
|
67
|
+
version_requirements: *id003
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: rspec
|
70
|
+
prerelease: false
|
71
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
hash: 3
|
77
|
+
segments:
|
78
|
+
- 2
|
79
|
+
- 0
|
80
|
+
version: "2.0"
|
81
|
+
type: :development
|
82
|
+
version_requirements: *id004
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
prerelease: false
|
86
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
hash: 3
|
92
|
+
segments:
|
93
|
+
- 0
|
94
|
+
version: "0"
|
95
|
+
type: :development
|
96
|
+
version_requirements: *id005
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: sqlite3
|
99
|
+
prerelease: false
|
100
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
101
|
+
none: false
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
hash: 3
|
106
|
+
segments:
|
107
|
+
- 0
|
108
|
+
version: "0"
|
109
|
+
type: :development
|
110
|
+
version_requirements: *id006
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: mysql
|
113
|
+
prerelease: false
|
114
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
hash: 3
|
120
|
+
segments:
|
121
|
+
- 0
|
122
|
+
version: "0"
|
123
|
+
type: :development
|
124
|
+
version_requirements: *id007
|
125
|
+
description: |-
|
126
|
+
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.
|
127
|
+
|
128
|
+
This gem is collectiveidea's fork (http://github.com/collectiveidea/delayed_job).
|
129
|
+
email:
|
130
|
+
- chris@collectiveidea.com
|
131
|
+
- brandon@opensoul.org
|
132
|
+
executables: []
|
133
|
+
|
134
|
+
extensions: []
|
135
|
+
|
136
|
+
extra_rdoc_files:
|
137
|
+
- README.textile
|
138
|
+
files:
|
139
|
+
- contrib/delayed_job.monitrc
|
140
|
+
- contrib/delayed_job_multiple.monitrc
|
141
|
+
- lib/delayed/backend/active_record.rb
|
142
|
+
- lib/delayed/backend/base.rb
|
143
|
+
- lib/delayed/backend/shared_spec.rb
|
144
|
+
- lib/delayed/command.rb
|
145
|
+
- lib/delayed/deserialization_error.rb
|
146
|
+
- lib/delayed/message_sending.rb
|
147
|
+
- lib/delayed/performable_mailer.rb
|
148
|
+
- lib/delayed/performable_method.rb
|
149
|
+
- lib/delayed/railtie.rb
|
150
|
+
- lib/delayed/recipes.rb
|
151
|
+
- lib/delayed/serialization/active_record.rb
|
152
|
+
- lib/delayed/tasks.rb
|
153
|
+
- lib/delayed/worker.rb
|
154
|
+
- lib/delayed/yaml_ext.rb
|
155
|
+
- lib/delayed_job.rb
|
156
|
+
- lib/generators/delayed_job/delayed_job_generator.rb
|
157
|
+
- lib/generators/delayed_job/templates/migration.rb
|
158
|
+
- lib/generators/delayed_job/templates/script
|
159
|
+
- recipes/delayed_job.rb
|
160
|
+
- spec/active_record_job_spec.rb
|
161
|
+
- spec/autoloaded/clazz.rb
|
162
|
+
- spec/autoloaded/struct.rb
|
163
|
+
- spec/database.yml
|
164
|
+
- spec/message_sending_spec.rb
|
165
|
+
- spec/performable_mailer_spec.rb
|
166
|
+
- spec/performable_method_spec.rb
|
167
|
+
- spec/sample_jobs.rb
|
168
|
+
- spec/spec_helper.rb
|
169
|
+
- spec/worker_spec.rb
|
170
|
+
- spec/yaml_ext_spec.rb
|
171
|
+
- MIT-LICENSE
|
172
|
+
- README.textile
|
173
|
+
has_rdoc: true
|
174
|
+
homepage: http://github.com/joelbasson/delayed_job
|
175
|
+
licenses: []
|
176
|
+
|
177
|
+
post_install_message:
|
178
|
+
rdoc_options:
|
179
|
+
- --main
|
180
|
+
- README.textile
|
181
|
+
- --inline-source
|
182
|
+
- --line-numbers
|
183
|
+
require_paths:
|
184
|
+
- lib
|
185
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
186
|
+
none: false
|
187
|
+
requirements:
|
188
|
+
- - ">="
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
hash: 3
|
191
|
+
segments:
|
192
|
+
- 0
|
193
|
+
version: "0"
|
194
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
|
+
none: false
|
196
|
+
requirements:
|
197
|
+
- - ">="
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
hash: 3
|
200
|
+
segments:
|
201
|
+
- 0
|
202
|
+
version: "0"
|
203
|
+
requirements: []
|
204
|
+
|
205
|
+
rubyforge_project:
|
206
|
+
rubygems_version: 1.3.7
|
207
|
+
signing_key:
|
208
|
+
specification_version: 3
|
209
|
+
summary: Database-backed asynchronous priority queue system -- Extracted from Shopify
|
210
|
+
test_files:
|
211
|
+
- spec/active_record_job_spec.rb
|
212
|
+
- spec/autoloaded/clazz.rb
|
213
|
+
- spec/autoloaded/struct.rb
|
214
|
+
- spec/database.yml
|
215
|
+
- spec/message_sending_spec.rb
|
216
|
+
- spec/performable_mailer_spec.rb
|
217
|
+
- spec/performable_method_spec.rb
|
218
|
+
- spec/sample_jobs.rb
|
219
|
+
- spec/spec_helper.rb
|
220
|
+
- spec/worker_spec.rb
|
221
|
+
- spec/yaml_ext_spec.rb
|