emipair-delayed_job 2.0.3.1

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.
Files changed (91) hide show
  1. data/.gitignore +2 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.textile +213 -0
  4. data/Rakefile +33 -0
  5. data/VERSION +1 -0
  6. data/benchmarks.rb +33 -0
  7. data/contrib/delayed_job.monitrc +14 -0
  8. data/contrib/delayed_job_multiple.monitrc +23 -0
  9. data/emipair-delayed_job.gemspec +25 -0
  10. data/generators/delayed_job/delayed_job_generator.rb +22 -0
  11. data/generators/delayed_job/templates/migration.rb +21 -0
  12. data/generators/delayed_job/templates/script +5 -0
  13. data/init.rb +1 -0
  14. data/lib/delayed/backend/active_record.rb +90 -0
  15. data/lib/delayed/backend/base.rb +111 -0
  16. data/lib/delayed/backend/data_mapper.rb +147 -0
  17. data/lib/delayed/backend/mongo_mapper.rb +110 -0
  18. data/lib/delayed/command.rb +109 -0
  19. data/lib/delayed/message_sending.rb +22 -0
  20. data/lib/delayed/performable_method.rb +62 -0
  21. data/lib/delayed/railtie.rb +10 -0
  22. data/lib/delayed/recipes.rb +31 -0
  23. data/lib/delayed/tasks.rb +15 -0
  24. data/lib/delayed/worker.rb +214 -0
  25. data/lib/delayed_job.rb +15 -0
  26. data/lib/passive_support.rb +4 -0
  27. data/lib/passive_support/basic_object.rb +16 -0
  28. data/lib/passive_support/core_ext.rb +8 -0
  29. data/lib/passive_support/core_ext/class.rb +1 -0
  30. data/lib/passive_support/core_ext/class/attribute_accessors.rb +57 -0
  31. data/lib/passive_support/core_ext/date.rb +10 -0
  32. data/lib/passive_support/core_ext/date/behavior.rb +42 -0
  33. data/lib/passive_support/core_ext/date/calculations.rb +241 -0
  34. data/lib/passive_support/core_ext/date/conversions.rb +107 -0
  35. data/lib/passive_support/core_ext/date_time.rb +12 -0
  36. data/lib/passive_support/core_ext/date_time/calculations.rb +126 -0
  37. data/lib/passive_support/core_ext/date_time/conversions.rb +107 -0
  38. data/lib/passive_support/core_ext/enumerable.rb +120 -0
  39. data/lib/passive_support/core_ext/kernel.rb +5 -0
  40. data/lib/passive_support/core_ext/kernel/agnostics.rb +11 -0
  41. data/lib/passive_support/core_ext/kernel/daemonizing.rb +7 -0
  42. data/lib/passive_support/core_ext/kernel/debugger.rb +16 -0
  43. data/lib/passive_support/core_ext/kernel/reporting.rb +59 -0
  44. data/lib/passive_support/core_ext/kernel/requires.rb +24 -0
  45. data/lib/passive_support/core_ext/module.rb +20 -0
  46. data/lib/passive_support/core_ext/module/aliasing.rb +74 -0
  47. data/lib/passive_support/core_ext/module/attr_accessor_with_default.rb +31 -0
  48. data/lib/passive_support/core_ext/module/attr_internal.rb +32 -0
  49. data/lib/passive_support/core_ext/module/delegation.rb +135 -0
  50. data/lib/passive_support/core_ext/module/inclusion.rb +30 -0
  51. data/lib/passive_support/core_ext/module/introspection.rb +90 -0
  52. data/lib/passive_support/core_ext/module/loading.rb +23 -0
  53. data/lib/passive_support/core_ext/module/model_naming.rb +25 -0
  54. data/lib/passive_support/core_ext/module/synchronization.rb +39 -0
  55. data/lib/passive_support/core_ext/numeric.rb +9 -0
  56. data/lib/passive_support/core_ext/numeric/bytes.rb +50 -0
  57. data/lib/passive_support/core_ext/numeric/conversions.rb +19 -0
  58. data/lib/passive_support/core_ext/numeric/time.rb +81 -0
  59. data/lib/passive_support/core_ext/object.rb +6 -0
  60. data/lib/passive_support/core_ext/object/blank.rb +76 -0
  61. data/lib/passive_support/core_ext/object/conversions.rb +15 -0
  62. data/lib/passive_support/core_ext/object/extending.rb +80 -0
  63. data/lib/passive_support/core_ext/object/instance_variables.rb +74 -0
  64. data/lib/passive_support/core_ext/object/misc.rb +90 -0
  65. data/lib/passive_support/core_ext/object/singleton_class.rb +13 -0
  66. data/lib/passive_support/core_ext/string.rb +1 -0
  67. data/lib/passive_support/core_ext/string/constantize.rb +7 -0
  68. data/lib/passive_support/core_ext/time.rb +46 -0
  69. data/lib/passive_support/core_ext/time/behavior.rb +13 -0
  70. data/lib/passive_support/core_ext/time/calculations.rb +313 -0
  71. data/lib/passive_support/core_ext/time/conversions.rb +90 -0
  72. data/lib/passive_support/core_ext/time/zones.rb +86 -0
  73. data/lib/passive_support/duration.rb +100 -0
  74. data/lib/passive_support/ordered_hash.rb +158 -0
  75. data/rails/init.rb +5 -0
  76. data/recipes/delayed_job.rb +1 -0
  77. data/spec/backend/active_record_job_spec.rb +46 -0
  78. data/spec/backend/data_mapper_job_spec.rb +16 -0
  79. data/spec/backend/mongo_mapper_job_spec.rb +94 -0
  80. data/spec/backend/shared_backend_spec.rb +268 -0
  81. data/spec/delayed_method_spec.rb +58 -0
  82. data/spec/performable_method_spec.rb +42 -0
  83. data/spec/sample_jobs.rb +25 -0
  84. data/spec/setup/active_record.rb +33 -0
  85. data/spec/setup/data_mapper.rb +24 -0
  86. data/spec/setup/mongo_mapper.rb +17 -0
  87. data/spec/spec_helper.rb +19 -0
  88. data/spec/story_spec.rb +17 -0
  89. data/spec/worker_spec.rb +225 -0
  90. data/tasks/jobs.rake +1 -0
  91. metadata +323 -0
@@ -0,0 +1,17 @@
1
+ require 'mongo_mapper'
2
+
3
+ MongoMapper.config = {
4
+ RAILS_ENV => {'database' => 'delayed_job'}
5
+ }
6
+ MongoMapper.connect RAILS_ENV
7
+
8
+ unless defined?(Story)
9
+ class Story
10
+ include ::MongoMapper::Document
11
+ def tell; text; end
12
+ def whatever(n, _); tell*n; end
13
+ def self.count; end
14
+
15
+ handle_asynchronously :whatever
16
+ end
17
+ end
@@ -0,0 +1,19 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
2
+
3
+ require 'rubygems'
4
+ require 'spec'
5
+ require 'logger'
6
+
7
+ require 'delayed_job'
8
+ require 'sample_jobs'
9
+
10
+ Delayed::Worker.logger = Logger.new('/tmp/dj.log')
11
+ RAILS_ENV = 'test'
12
+
13
+ # determine the available backends
14
+
15
+ require 'setup/data_mapper'
16
+ require 'backend/data_mapper_job_spec'
17
+
18
+ BACKENDS = [:data_mapper]
19
+ Delayed::Worker.backend = :data_mapper
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe "A story" do
4
+
5
+ before(:all) do
6
+ @story = Story.create :text => "Once upon a time..."
7
+ end
8
+
9
+ it "should be shared" do
10
+ @story.tell.should == 'Once upon a time...'
11
+ end
12
+
13
+ it "should not return its result if it storytelling is delayed" do
14
+ @story.send_later(:tell).should_not == 'Once upon a time...'
15
+ end
16
+
17
+ end
@@ -0,0 +1,225 @@
1
+ require 'spec_helper'
2
+
3
+ describe Delayed::Worker do
4
+ def job_create(opts = {})
5
+ Delayed::Job.create(opts.merge(:payload_object => SimpleJob.new))
6
+ end
7
+
8
+ describe "backend=" do
9
+ it "should set the Delayed::Job constant to the backend" do
10
+ @clazz = Class.new
11
+ Delayed::Worker.backend = @clazz
12
+ Delayed::Job.should == @clazz
13
+ end
14
+
15
+ it "should set backend with a symbol" do
16
+ Delayed::Worker.backend = Class.new
17
+ Delayed::Worker.backend = :data_mapper
18
+ Delayed::Worker.backend.should == Delayed::Backend::DataMapper::Job
19
+ end
20
+ end
21
+
22
+ BACKENDS.each do |backend|
23
+ describe "with the #{backend} backend" do
24
+ before do
25
+ Delayed::Worker.backend = backend
26
+ Delayed::Job.delete_all
27
+
28
+ @worker = Delayed::Worker.new(:max_priority => nil, :min_priority => nil, :quiet => true)
29
+
30
+ SimpleJob.runs = 0
31
+ end
32
+
33
+ describe "running a job" do
34
+ it "should fail after Worker.max_run_time" do
35
+ begin
36
+ old_max_run_time = Delayed::Worker.max_run_time
37
+ Delayed::Worker.max_run_time = 1.second
38
+ @job = Delayed::Job.create :payload_object => LongRunningJob.new
39
+ @worker.run(@job)
40
+ @job.reload.last_error.should =~ /expired/
41
+ @job.attempts.should == 1
42
+ ensure
43
+ Delayed::Worker.max_run_time = old_max_run_time
44
+ end
45
+ end
46
+ end
47
+
48
+ describe "finding a job to run" do
49
+ it "should not raise an exception if the backend raises one" do
50
+ mock_result = mock([])
51
+ mock_result.should_receive(:detect).and_raise(StandardError.new("backend connection problem"))
52
+ Delayed::Job.should_receive(:find_available).and_return(mock_result)
53
+ @worker.work_off.should == [0, 0]
54
+ end
55
+ end
56
+
57
+ context "worker prioritization" do
58
+ before(:each) do
59
+ @worker = Delayed::Worker.new(:max_priority => 5, :min_priority => -5, :quiet => true)
60
+ end
61
+
62
+ it "should only work_off jobs that are >= min_priority" do
63
+ SimpleJob.runs.should == 0
64
+
65
+ job_create(:priority => -10)
66
+ job_create(:priority => 0)
67
+ @worker.work_off
68
+
69
+ SimpleJob.runs.should == 1
70
+ end
71
+
72
+ it "should only work_off jobs that are <= max_priority" do
73
+ SimpleJob.runs.should == 0
74
+
75
+ job_create(:priority => 10)
76
+ job_create(:priority => 0)
77
+
78
+ @worker.work_off
79
+
80
+ SimpleJob.runs.should == 1
81
+ end
82
+ end
83
+
84
+ context "while running with locked and expired jobs" do
85
+ before(:each) do
86
+ @worker.name = 'worker1'
87
+ end
88
+
89
+ it "should not run jobs locked by another worker" do
90
+ job_create(:locked_by => 'other_worker', :locked_at => (Delayed::Job.db_time_now - 1.minutes))
91
+ lambda { @worker.work_off }.should_not change { SimpleJob.runs }
92
+ end
93
+
94
+ it "should run open jobs" do
95
+ job_create
96
+ lambda { @worker.work_off }.should change { SimpleJob.runs }.from(0).to(1)
97
+ end
98
+
99
+ it "should run expired jobs" do
100
+ expired_time = Delayed::Job.db_time_now - (1.minutes + Delayed::Worker.max_run_time)
101
+ job_create(:locked_by => 'other_worker', :locked_at => expired_time)
102
+ lambda { @worker.work_off }.should change { SimpleJob.runs }.from(0).to(1)
103
+ end
104
+
105
+ it "should run own jobs" do
106
+ job_create(:locked_by => @worker.name, :locked_at => (Delayed::Job.db_time_now - 1.minutes))
107
+ lambda { @worker.work_off }.should change { SimpleJob.runs }.from(0).to(1)
108
+ end
109
+ end
110
+
111
+ describe "failed jobs" do
112
+ before do
113
+ # reset defaults
114
+ Delayed::Worker.destroy_failed_jobs = true
115
+ Delayed::Worker.max_attempts = 25
116
+
117
+ @job = Delayed::Job.enqueue ErrorJob.new
118
+ end
119
+
120
+ it "should record last_error when destroy_failed_jobs = false, max_attempts = 1" do
121
+ Delayed::Worker.destroy_failed_jobs = false
122
+ Delayed::Worker.max_attempts = 1
123
+ @worker.run(@job)
124
+ @job.reload
125
+ @job.last_error.should =~ /did not work/
126
+ @job.last_error.should =~ /worker_spec.rb/
127
+ @job.attempts.should == 1
128
+ @job.failed_at.should_not be_nil
129
+ end
130
+
131
+ it "should re-schedule jobs after failing" do
132
+ @worker.run(@job)
133
+ @job.reload
134
+ @job.last_error.should =~ /did not work/
135
+ @job.last_error.should =~ /sample_jobs.rb:8:in `perform'/
136
+ @job.attempts.should == 1
137
+ @job.run_at.should > Delayed::Job.db_time_now - 10.minutes
138
+ @job.run_at.should < Delayed::Job.db_time_now + 10.minutes
139
+ end
140
+ end
141
+
142
+ context "reschedule" do
143
+ before do
144
+ @job = Delayed::Job.create :payload_object => SimpleJob.new
145
+ end
146
+
147
+ share_examples_for "any failure more than Worker.max_attempts times" do
148
+ context "when the job's payload has an #on_permanent_failure hook" do
149
+ before do
150
+ @job = Delayed::Job.create :payload_object => OnPermanentFailureJob.new
151
+ @job.payload_object.should respond_to :on_permanent_failure
152
+ end
153
+
154
+ it "should run that hook" do
155
+ @job.payload_object.should_receive :on_permanent_failure
156
+ Delayed::Worker.max_attempts.times { @worker.reschedule(@job) }
157
+ end
158
+ end
159
+
160
+ context "when the job's payload has no #on_permanent_failure hook" do
161
+ # It's a little tricky to test this in a straightforward way,
162
+ # because putting a should_not_receive expectation on
163
+ # @job.payload_object.on_permanent_failure makes that object
164
+ # incorrectly return true to
165
+ # payload_object.respond_to? :on_permanent_failure, which is what
166
+ # reschedule uses to decide whether to call on_permanent_failure.
167
+ # So instead, we just make sure that the payload_object as it
168
+ # already stands doesn't respond_to? on_permanent_failure, then
169
+ # shove it through the iterated reschedule loop and make sure we
170
+ # don't get a NoMethodError (caused by calling that nonexistent
171
+ # on_permanent_failure method).
172
+
173
+ before do
174
+ @job.payload_object.should_not respond_to(:on_permanent_failure)
175
+ end
176
+
177
+ it "should not try to run that hook" do
178
+ lambda do
179
+ Delayed::Worker.max_attempts.times { @worker.reschedule(@job) }
180
+ end.should_not raise_exception(NoMethodError)
181
+ end
182
+ end
183
+ end
184
+
185
+ context "and we want to destroy jobs" do
186
+ before do
187
+ Delayed::Worker.destroy_failed_jobs = true
188
+ end
189
+
190
+ it_should_behave_like "any failure more than Worker.max_attempts times"
191
+
192
+ it "should be destroyed if it failed more than Worker.max_attempts times" do
193
+ @job.should_receive(:destroy)
194
+ Delayed::Worker.max_attempts.times { @worker.reschedule(@job) }
195
+ end
196
+
197
+ it "should not be destroyed if failed fewer than Worker.max_attempts times" do
198
+ @job.should_not_receive(:destroy)
199
+ (Delayed::Worker.max_attempts - 1).times { @worker.reschedule(@job) }
200
+ end
201
+ end
202
+
203
+ context "and we don't want to destroy jobs" do
204
+ before do
205
+ Delayed::Worker.destroy_failed_jobs = false
206
+ end
207
+
208
+ it_should_behave_like "any failure more than Worker.max_attempts times"
209
+
210
+ it "should be failed if it failed more than Worker.max_attempts times" do
211
+ @job.reload.failed_at.should == nil
212
+ Delayed::Worker.max_attempts.times { @worker.reschedule(@job) }
213
+ @job.reload.failed_at.should_not == nil
214
+ end
215
+
216
+ it "should not be failed if it failed fewer than Worker.max_attempts times" do
217
+ (Delayed::Worker.max_attempts - 1).times { @worker.reschedule(@job) }
218
+ @job.reload.failed_at.should == nil
219
+ end
220
+ end
221
+ end
222
+ end
223
+ end
224
+
225
+ end
@@ -0,0 +1 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'delayed', 'tasks'))
metadata ADDED
@@ -0,0 +1,323 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: emipair-delayed_job
3
+ version: !ruby/object:Gem::Version
4
+ hash: 97
5
+ prerelease:
6
+ segments:
7
+ - 2
8
+ - 0
9
+ - 3
10
+ - 1
11
+ version: 2.0.3.1
12
+ platform: ruby
13
+ authors:
14
+ - EMI
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2011-01-24 00:00:00 -05:00
20
+ default_executable:
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ name: daemons
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: 3
31
+ segments:
32
+ - 0
33
+ version: "0"
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: blankslate
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
48
+ type: :runtime
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: rspec
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
62
+ type: :development
63
+ version_requirements: *id003
64
+ - !ruby/object:Gem::Dependency
65
+ name: sqlite3-ruby
66
+ prerelease: false
67
+ requirement: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
76
+ type: :development
77
+ version_requirements: *id004
78
+ - !ruby/object:Gem::Dependency
79
+ name: mongo_mapper
80
+ prerelease: false
81
+ requirement: &id005 !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ hash: 3
87
+ segments:
88
+ - 0
89
+ version: "0"
90
+ type: :development
91
+ version_requirements: *id005
92
+ - !ruby/object:Gem::Dependency
93
+ name: dm-core
94
+ prerelease: false
95
+ requirement: &id006 !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ hash: 3
101
+ segments:
102
+ - 0
103
+ version: "0"
104
+ type: :development
105
+ version_requirements: *id006
106
+ - !ruby/object:Gem::Dependency
107
+ name: dm-observer
108
+ prerelease: false
109
+ requirement: &id007 !ruby/object:Gem::Requirement
110
+ none: false
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ hash: 3
115
+ segments:
116
+ - 0
117
+ version: "0"
118
+ type: :development
119
+ version_requirements: *id007
120
+ - !ruby/object:Gem::Dependency
121
+ name: dm-aggregates
122
+ prerelease: false
123
+ requirement: &id008 !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ hash: 3
129
+ segments:
130
+ - 0
131
+ version: "0"
132
+ type: :development
133
+ version_requirements: *id008
134
+ - !ruby/object:Gem::Dependency
135
+ name: dm-validations
136
+ prerelease: false
137
+ requirement: &id009 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ hash: 3
143
+ segments:
144
+ - 0
145
+ version: "0"
146
+ type: :development
147
+ version_requirements: *id009
148
+ - !ruby/object:Gem::Dependency
149
+ name: do_sqlite3
150
+ prerelease: false
151
+ requirement: &id010 !ruby/object:Gem::Requirement
152
+ none: false
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ hash: 3
157
+ segments:
158
+ - 0
159
+ version: "0"
160
+ type: :development
161
+ version_requirements: *id010
162
+ - !ruby/object:Gem::Dependency
163
+ name: database_cleaner
164
+ prerelease: false
165
+ requirement: &id011 !ruby/object:Gem::Requirement
166
+ none: false
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ hash: 3
171
+ segments:
172
+ - 0
173
+ version: "0"
174
+ type: :development
175
+ version_requirements: *id011
176
+ description: DelayedJob for use form within a Merb application
177
+ email:
178
+ - platform-ops@emimusic.com
179
+ executables: []
180
+
181
+ extensions: []
182
+
183
+ extra_rdoc_files: []
184
+
185
+ files:
186
+ - .gitignore
187
+ - MIT-LICENSE
188
+ - README.textile
189
+ - Rakefile
190
+ - VERSION
191
+ - benchmarks.rb
192
+ - contrib/delayed_job.monitrc
193
+ - contrib/delayed_job_multiple.monitrc
194
+ - emipair-delayed_job.gemspec
195
+ - generators/delayed_job/delayed_job_generator.rb
196
+ - generators/delayed_job/templates/migration.rb
197
+ - generators/delayed_job/templates/script
198
+ - init.rb
199
+ - lib/delayed/backend/active_record.rb
200
+ - lib/delayed/backend/base.rb
201
+ - lib/delayed/backend/data_mapper.rb
202
+ - lib/delayed/backend/mongo_mapper.rb
203
+ - lib/delayed/command.rb
204
+ - lib/delayed/message_sending.rb
205
+ - lib/delayed/performable_method.rb
206
+ - lib/delayed/railtie.rb
207
+ - lib/delayed/recipes.rb
208
+ - lib/delayed/tasks.rb
209
+ - lib/delayed/worker.rb
210
+ - lib/delayed_job.rb
211
+ - lib/passive_support.rb
212
+ - lib/passive_support/basic_object.rb
213
+ - lib/passive_support/core_ext.rb
214
+ - lib/passive_support/core_ext/class.rb
215
+ - lib/passive_support/core_ext/class/attribute_accessors.rb
216
+ - lib/passive_support/core_ext/date.rb
217
+ - lib/passive_support/core_ext/date/behavior.rb
218
+ - lib/passive_support/core_ext/date/calculations.rb
219
+ - lib/passive_support/core_ext/date/conversions.rb
220
+ - lib/passive_support/core_ext/date_time.rb
221
+ - lib/passive_support/core_ext/date_time/calculations.rb
222
+ - lib/passive_support/core_ext/date_time/conversions.rb
223
+ - lib/passive_support/core_ext/enumerable.rb
224
+ - lib/passive_support/core_ext/kernel.rb
225
+ - lib/passive_support/core_ext/kernel/agnostics.rb
226
+ - lib/passive_support/core_ext/kernel/daemonizing.rb
227
+ - lib/passive_support/core_ext/kernel/debugger.rb
228
+ - lib/passive_support/core_ext/kernel/reporting.rb
229
+ - lib/passive_support/core_ext/kernel/requires.rb
230
+ - lib/passive_support/core_ext/module.rb
231
+ - lib/passive_support/core_ext/module/aliasing.rb
232
+ - lib/passive_support/core_ext/module/attr_accessor_with_default.rb
233
+ - lib/passive_support/core_ext/module/attr_internal.rb
234
+ - lib/passive_support/core_ext/module/delegation.rb
235
+ - lib/passive_support/core_ext/module/inclusion.rb
236
+ - lib/passive_support/core_ext/module/introspection.rb
237
+ - lib/passive_support/core_ext/module/loading.rb
238
+ - lib/passive_support/core_ext/module/model_naming.rb
239
+ - lib/passive_support/core_ext/module/synchronization.rb
240
+ - lib/passive_support/core_ext/numeric.rb
241
+ - lib/passive_support/core_ext/numeric/bytes.rb
242
+ - lib/passive_support/core_ext/numeric/conversions.rb
243
+ - lib/passive_support/core_ext/numeric/time.rb
244
+ - lib/passive_support/core_ext/object.rb
245
+ - lib/passive_support/core_ext/object/blank.rb
246
+ - lib/passive_support/core_ext/object/conversions.rb
247
+ - lib/passive_support/core_ext/object/extending.rb
248
+ - lib/passive_support/core_ext/object/instance_variables.rb
249
+ - lib/passive_support/core_ext/object/misc.rb
250
+ - lib/passive_support/core_ext/object/singleton_class.rb
251
+ - lib/passive_support/core_ext/string.rb
252
+ - lib/passive_support/core_ext/string/constantize.rb
253
+ - lib/passive_support/core_ext/time.rb
254
+ - lib/passive_support/core_ext/time/behavior.rb
255
+ - lib/passive_support/core_ext/time/calculations.rb
256
+ - lib/passive_support/core_ext/time/conversions.rb
257
+ - lib/passive_support/core_ext/time/zones.rb
258
+ - lib/passive_support/duration.rb
259
+ - lib/passive_support/ordered_hash.rb
260
+ - rails/init.rb
261
+ - recipes/delayed_job.rb
262
+ - spec/backend/active_record_job_spec.rb
263
+ - spec/backend/data_mapper_job_spec.rb
264
+ - spec/backend/mongo_mapper_job_spec.rb
265
+ - spec/backend/shared_backend_spec.rb
266
+ - spec/delayed_method_spec.rb
267
+ - spec/performable_method_spec.rb
268
+ - spec/sample_jobs.rb
269
+ - spec/setup/active_record.rb
270
+ - spec/setup/data_mapper.rb
271
+ - spec/setup/mongo_mapper.rb
272
+ - spec/spec_helper.rb
273
+ - spec/story_spec.rb
274
+ - spec/worker_spec.rb
275
+ - tasks/jobs.rake
276
+ has_rdoc: true
277
+ homepage: ""
278
+ licenses: []
279
+
280
+ post_install_message:
281
+ rdoc_options: []
282
+
283
+ require_paths:
284
+ - lib
285
+ required_ruby_version: !ruby/object:Gem::Requirement
286
+ none: false
287
+ requirements:
288
+ - - ">="
289
+ - !ruby/object:Gem::Version
290
+ hash: 3
291
+ segments:
292
+ - 0
293
+ version: "0"
294
+ required_rubygems_version: !ruby/object:Gem::Requirement
295
+ none: false
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ hash: 3
300
+ segments:
301
+ - 0
302
+ version: "0"
303
+ requirements: []
304
+
305
+ rubyforge_project:
306
+ rubygems_version: 1.4.1
307
+ signing_key:
308
+ specification_version: 3
309
+ summary: DelayedJob Merb port
310
+ test_files:
311
+ - spec/backend/active_record_job_spec.rb
312
+ - spec/backend/data_mapper_job_spec.rb
313
+ - spec/backend/mongo_mapper_job_spec.rb
314
+ - spec/backend/shared_backend_spec.rb
315
+ - spec/delayed_method_spec.rb
316
+ - spec/performable_method_spec.rb
317
+ - spec/sample_jobs.rb
318
+ - spec/setup/active_record.rb
319
+ - spec/setup/data_mapper.rb
320
+ - spec/setup/mongo_mapper.rb
321
+ - spec/spec_helper.rb
322
+ - spec/story_spec.rb
323
+ - spec/worker_spec.rb