resque-scheduler 2.0.1 → 2.1.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.

Potentially problematic release.


This version of resque-scheduler might be problematic. Click here for more details.

@@ -0,0 +1,14 @@
1
+ require 'redis'
2
+ require 'resque'
3
+
4
+ if ARGV.size != 1
5
+ puts "migrate_to_timestamps_set.rb <redis-host:redis-port>"
6
+ exit
7
+ end
8
+
9
+ Resque.redis = ARGV[0]
10
+ redis = Resque.redis
11
+ Array(redis.keys("delayed:*")).each do |key|
12
+ jobs = redis.lrange(key, 0, -1)
13
+ jobs.each {|job| redis.sadd("timestamps:#{job}", key)}
14
+ end
@@ -8,20 +8,21 @@ context "DelayedQueue" do
8
8
  end
9
9
 
10
10
  test "enqueue_at adds correct list and zset" do
11
- timestamp = Time.now - 1 # 1 second ago (in the past, should come out right away)
11
+ timestamp = Time.now + 1
12
+ encoded_job = Resque.encode({:class => SomeIvarJob.to_s, :args => ["path"], :queue => Resque.queue_from_class(SomeIvarJob)})
12
13
 
13
14
  assert_equal(0, Resque.redis.llen("delayed:#{timestamp.to_i}").to_i, "delayed queue should be empty to start")
15
+ assert_equal(0, Resque.redis.scard("timestamps:#{encoded_job}"), "job timestamps set should be empty to start")
14
16
 
15
17
  Resque.enqueue_at(timestamp, SomeIvarJob, "path")
16
18
 
17
19
  # Confirm the correct keys were added
18
20
  assert_equal(1, Resque.redis.llen("delayed:#{timestamp.to_i}").to_i, "delayed queue should have one entry now")
21
+ assert_equal(1, Resque.redis.scard("timestamps:#{encoded_job}"), "job timestamps should have one entry now")
19
22
  assert_equal(1, Resque.redis.zcard(:delayed_queue_schedule), "The delayed_queue_schedule should have 1 entry now")
20
23
 
21
- read_timestamp = Resque.next_delayed_timestamp
24
+ read_timestamp = timestamp.to_i
22
25
 
23
- # Confirm the timestamp came out correctly
24
- assert_equal(timestamp.to_i, read_timestamp, "The timestamp we pull out of redis should match the one we put in")
25
26
  item = Resque.next_item_for_timestamp(read_timestamp)
26
27
 
27
28
  # Confirm the item came out correctly
@@ -31,23 +32,25 @@ context "DelayedQueue" do
31
32
  # And now confirm the keys are gone
32
33
  assert(!Resque.redis.exists("delayed:#{timestamp.to_i}"))
33
34
  assert_equal(0, Resque.redis.zcard(:delayed_queue_schedule), "delayed queue should be empty")
35
+ assert_equal(0, Resque.redis.scard("timestamps:#{encoded_job}"), "job timestamps set should be empty")
34
36
  end
35
37
 
36
38
  test "enqueue_at with queue adds correct list and zset and queue" do
37
- timestamp = Time.now - 1 # 1 second ago (in the past, should come out right away)
39
+ timestamp = Time.now + 1
40
+ encoded_job = Resque.encode({:class => SomeIvarJob.to_s, :args => ["path"], :queue => 'critical'})
38
41
 
39
42
  assert_equal(0, Resque.redis.llen("delayed:#{timestamp.to_i}").to_i, "delayed queue should be empty to start")
43
+ assert_equal(0, Resque.redis.scard("timestamps:#{encoded_job}"), "job timestamps set should be empty to start")
40
44
 
41
45
  Resque.enqueue_at_with_queue('critical', timestamp, SomeIvarJob, "path")
42
46
 
43
47
  # Confirm the correct keys were added
44
48
  assert_equal(1, Resque.redis.llen("delayed:#{timestamp.to_i}").to_i, "delayed queue should have one entry now")
49
+ assert_equal(1, Resque.redis.scard("timestamps:#{encoded_job}"), "job timestamps should have one entry now")
45
50
  assert_equal(1, Resque.redis.zcard(:delayed_queue_schedule), "The delayed_queue_schedule should have 1 entry now")
46
51
 
47
- read_timestamp = Resque.next_delayed_timestamp
52
+ read_timestamp = timestamp.to_i
48
53
 
49
- # Confirm the timestamp came out correctly
50
- assert_equal(timestamp.to_i, read_timestamp, "The timestamp we pull out of redis should match the one we put in")
51
54
  item = Resque.next_item_for_timestamp(read_timestamp)
52
55
 
53
56
  # Confirm the item came out correctly
@@ -58,17 +61,21 @@ context "DelayedQueue" do
58
61
  # And now confirm the keys are gone
59
62
  assert(!Resque.redis.exists("delayed:#{timestamp.to_i}"))
60
63
  assert_equal(0, Resque.redis.zcard(:delayed_queue_schedule), "delayed queue should be empty")
64
+ assert_equal(0, Resque.redis.scard("timestamps:#{encoded_job}"), "job timestamps set should be empty")
61
65
  end
62
66
 
63
67
  test "a job in the future doesn't come out" do
64
68
  timestamp = Time.now + 600 # 10 minutes from now (in the future, shouldn't come out)
69
+ encoded_job = Resque.encode({:class => SomeIvarJob.to_s, :args => ["path"], :queue => Resque.queue_from_class(SomeIvarJob)})
65
70
 
66
71
  assert_equal(0, Resque.redis.llen("delayed:#{timestamp.to_i}").to_i, "delayed queue should be empty to start")
72
+ assert_equal(0, Resque.redis.scard("timestamps:#{encoded_job}"), "job timestamps set should be empty to start")
67
73
 
68
74
  Resque.enqueue_at(timestamp, SomeIvarJob, "path")
69
75
 
70
76
  # Confirm the correct keys were added
71
77
  assert_equal(1, Resque.redis.llen("delayed:#{timestamp.to_i}").to_i, "delayed queue should have one entry now")
78
+ assert_equal(1, Resque.redis.scard("timestamps:#{encoded_job}"), "job timestamps should have one entry now")
72
79
  assert_equal(1, Resque.redis.zcard(:delayed_queue_schedule), "The delayed_queue_schedule should have 1 entry now")
73
80
 
74
81
  read_timestamp = Resque.next_delayed_timestamp
@@ -88,19 +95,21 @@ context "DelayedQueue" do
88
95
 
89
96
  test "enqueue_at and enqueue_in are equivelent" do
90
97
  timestamp = Time.now + 60
98
+ encoded_job = Resque.encode({:class => SomeIvarJob.to_s, :args => ["path"], :queue => Resque.queue_from_class(SomeIvarJob)})
91
99
 
92
100
  Resque.enqueue_at(timestamp, SomeIvarJob, "path")
93
101
  Resque.enqueue_in(timestamp - Time.now, SomeIvarJob, "path")
94
102
 
95
103
  assert_equal(1, Resque.redis.zcard(:delayed_queue_schedule), "should have one timestamp in the delayed queue")
96
104
  assert_equal(2, Resque.redis.llen("delayed:#{timestamp.to_i}"), "should have 2 items in the timestamp queue")
105
+ assert_equal(1, Resque.redis.scard("timestamps:#{encoded_job}"), "job timestamps should have one entry now")
97
106
  end
98
107
 
99
108
  test "empty delayed_queue_peek returns empty array" do
100
109
  assert_equal([], Resque.delayed_queue_peek(0,20))
101
110
  end
102
111
 
103
- test "delqyed_queue_peek returns stuff" do
112
+ test "delayed_queue_peek returns stuff" do
104
113
  t = Time.now
105
114
  expected_timestamps = (1..5).to_a.map do |i|
106
115
  (t + 60 + i).to_i
@@ -166,12 +175,11 @@ context "DelayedQueue" do
166
175
 
167
176
  test "handle_delayed_item with items" do
168
177
  t = Time.now - 60 # in the past
169
- Resque.enqueue_at(t, SomeIvarJob)
170
- Resque.enqueue_at(t, SomeIvarJob)
171
178
 
172
179
  # 2 SomeIvarJob jobs should be created in the "ivar" queue
173
- Resque::Job.expects(:create).twice.with('ivar', SomeIvarJob, nil)
174
- Resque::Scheduler.handle_delayed_items
180
+ Resque::Job.expects(:create).twice.with(:ivar, SomeIvarJob)
181
+ Resque.enqueue_at(t, SomeIvarJob)
182
+ Resque.enqueue_at(t, SomeIvarJob)
175
183
  end
176
184
 
177
185
  test "handle_delayed_items with items in the future" do
@@ -186,9 +194,8 @@ context "DelayedQueue" do
186
194
 
187
195
  test "calls klass#scheduled when enqueuing jobs if it exists" do
188
196
  t = Time.now - 60
197
+ FakeCustomJobClassEnqueueAt.expects(:scheduled).once.with(:test, FakeCustomJobClassEnqueueAt.to_s, {:foo => "bar"})
189
198
  Resque.enqueue_at(t, FakeCustomJobClassEnqueueAt, :foo => "bar")
190
- FakeCustomJobClassEnqueueAt.expects(:scheduled).once.with('test', FakeCustomJobClassEnqueueAt.to_s, {"foo" => "bar"})
191
- Resque::Scheduler.handle_delayed_items
192
199
  end
193
200
 
194
201
  test "when Resque.inline = true, calls klass#scheduled when enqueuing jobs if it exists" do
@@ -218,6 +225,24 @@ context "DelayedQueue" do
218
225
  assert_equal(0, Resque.delayed_timestamp_peek(t, 0, 3).length)
219
226
  end
220
227
 
228
+ test "enqueue_delayed creates jobs and empties the delayed queue" do
229
+ t = Time.now + 60
230
+
231
+ Resque.enqueue_at(t, SomeIvarJob, "foo")
232
+ Resque.enqueue_at(t, SomeIvarJob, "bar")
233
+ Resque.enqueue_at(t, SomeIvarJob, "bar")
234
+
235
+ # 3 SomeIvarJob jobs should be created in the "ivar" queue
236
+ Resque::Job.expects(:create).never.with(:ivar, SomeIvarJob, "foo")
237
+ Resque::Job.expects(:create).twice.with(:ivar, SomeIvarJob, "bar")
238
+
239
+ # 2 SomeIvarJob jobs should be enqueued
240
+ assert_equal(2, Resque.enqueue_delayed(SomeIvarJob, "bar"))
241
+
242
+ # delayed queue for timestamp should have one remaining
243
+ assert_equal(1, Resque.delayed_timestamp_peek(t, 0, 3).length)
244
+ end
245
+
221
246
  test "handle_delayed_items works with out specifying queue (upgrade case)" do
222
247
  t = Time.now - 60
223
248
  Resque.delayed_push(t, :class => 'SomeIvarJob')
@@ -237,13 +262,23 @@ context "DelayedQueue" do
237
262
 
238
263
  Resque.reset_delayed_queue
239
264
  assert_equal(0, Resque.delayed_queue_schedule_size)
265
+ assert_equal(0, Resque.redis.keys("timestamps:*").size)
240
266
  end
241
267
 
242
268
  test "remove_delayed removes job and returns the count" do
243
269
  t = Time.now + 120
270
+ encoded_job = Resque.encode({:class => SomeIvarJob.to_s, :args => [], :queue => Resque.queue_from_class(SomeIvarJob)})
244
271
  Resque.enqueue_at(t, SomeIvarJob)
245
272
 
246
273
  assert_equal(1, Resque.remove_delayed(SomeIvarJob))
274
+ assert_equal(0, Resque.redis.scard("timestamps:#{encoded_job}"))
275
+ end
276
+
277
+ test "scheduled_at returns an array containing job schedule time" do
278
+ t = Time.now + 120
279
+ Resque.enqueue_at(t, SomeIvarJob)
280
+
281
+ assert_equal([t.to_i], Resque.scheduled_at(SomeIvarJob))
247
282
  end
248
283
 
249
284
  test "remove_delayed doesn't remove things it shouldn't" do
@@ -10,10 +10,10 @@ context "on GET to /schedule" do
10
10
  end
11
11
 
12
12
  context "on GET to /schedule with scheduled jobs" do
13
- setup do
13
+ setup do
14
14
  ENV['rails_env'] = 'production'
15
- Resque.schedule = {:some_ivar_job => {'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp", 'rails_env' => 'production'},
16
- :some_other_job => {'queue' => 'high', 'class' => 'SomeOtherJob', 'args' => {:b => 'blah'}}}
15
+ Resque.schedule = {'some_ivar_job' => {'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp", 'rails_env' => 'production'},
16
+ 'some_other_job' => {'every' => ['5m'], 'queue' => 'high', 'class' => 'SomeOtherJob', 'args' => {'b' => 'blah'}}}
17
17
  Resque::Scheduler.load_schedule!
18
18
  get "/schedule"
19
19
  end
@@ -77,7 +77,7 @@ context "scheduling jobs with arguments" do
77
77
  test "calls the worker without arguments when 'args' is blank in the config" do
78
78
  Resque::Scheduler.enqueue_from_config(YAML.load(<<-YAML))
79
79
  class: SomeIvarJob
80
- args:
80
+ args:
81
81
  YAML
82
82
  SomeIvarJob.expects(:perform).once.with()
83
83
  Resque.reserve('ivar').perform
@@ -0,0 +1,59 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ context "Resque::Scheduler" do
4
+
5
+ setup do
6
+ Resque::Scheduler.dynamic = false
7
+ Resque.redis.flushall
8
+ Resque::Scheduler.clear_schedule!
9
+ end
10
+
11
+ test 'set custom logger' do
12
+ custom_logger = Logger.new('/dev/null')
13
+ Resque::Scheduler.logger = custom_logger
14
+ assert_equal(custom_logger, Resque::Scheduler.logger)
15
+ end
16
+
17
+ context 'logger default settings' do
18
+ setup do
19
+ nullify_logger
20
+ end
21
+
22
+ test 'uses STDOUT' do
23
+ assert_equal(Resque::Scheduler.logger.instance_variable_get(:@logdev).dev, STDOUT)
24
+ end
25
+ test 'not verbose' do
26
+ assert Resque::Scheduler.logger.level > Logger::DEBUG
27
+ end
28
+ test 'not muted' do
29
+ assert Resque::Scheduler.logger.level < Logger::FATAL
30
+ end
31
+
32
+ teardown do
33
+ nullify_logger
34
+ end
35
+ end
36
+
37
+ context 'logger custom settings' do
38
+ setup do
39
+ nullify_logger
40
+ end
41
+
42
+ test 'uses logfile' do
43
+ Resque::Scheduler.logfile = '/dev/null'
44
+ assert_equal(Resque::Scheduler.logger.instance_variable_get(:@logdev).filename, '/dev/null')
45
+ end
46
+ test 'set verbosity' do
47
+ Resque::Scheduler.verbose = true
48
+ assert Resque::Scheduler.logger.level == Logger::DEBUG
49
+ end
50
+ test 'mute logger' do
51
+ Resque::Scheduler.mute = true
52
+ assert Resque::Scheduler.logger.level == Logger::FATAL
53
+ end
54
+
55
+ teardown do
56
+ nullify_logger
57
+ end
58
+ end
59
+ end
@@ -191,6 +191,17 @@ context "Resque::Scheduler" do
191
191
  assert_equal({'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/75"},
192
192
  Resque.decode(Resque.redis.hget(:schedules, "my_ivar_job")))
193
193
  end
194
+
195
+ test "schedule= removes schedules not present in the given schedule argument" do
196
+ Resque::Scheduler.dynamic = true
197
+
198
+ Resque.schedule = {"old_job" => {'cron' => "* * * * *", 'class' => 'OldJob'}}
199
+ assert_equal({"old_job" => {'cron' => "* * * * *", 'class' => 'OldJob'}}, Resque.schedule)
200
+
201
+ Resque.schedule = {"new_job" => {'cron' => "* * * * *", 'class' => 'NewJob'}}
202
+ Resque.reload_schedule!
203
+ assert_equal({"new_job" => {'cron' => "* * * * *", 'class' => 'NewJob'}}, Resque.schedule)
204
+ end
194
205
 
195
206
  test "schedule= uses job name as 'class' argument if it's missing" do
196
207
  Resque::Scheduler.dynamic = true
@@ -6,7 +6,7 @@ dir = File.dirname(File.expand_path(__FILE__))
6
6
 
7
7
  require 'rubygems'
8
8
  require 'test/unit'
9
- require 'mocha'
9
+ require 'mocha/setup'
10
10
  require 'resque'
11
11
  $LOAD_PATH.unshift File.dirname(File.expand_path(__FILE__)) + '/../lib'
12
12
  require 'resque_scheduler'
@@ -57,7 +57,7 @@ def context(*args, &block)
57
57
  def self.teardown(&block) define_method(:teardown, &block) end
58
58
  end
59
59
  (class << klass; self end).send(:define_method, :name) { name.gsub(/\W/,'_') }
60
- klass.class_eval &block
60
+ klass.class_eval(&block)
61
61
  end
62
62
 
63
63
  class FakeCustomJobClass
@@ -83,3 +83,10 @@ class SomeRealClass
83
83
  :some_real_queue
84
84
  end
85
85
  end
86
+
87
+ def nullify_logger
88
+ Resque::Scheduler.mute = nil
89
+ Resque::Scheduler.verbose = nil
90
+ Resque::Scheduler.logfile = nil
91
+ Resque::Scheduler.logger = nil
92
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque-scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,16 +9,64 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-21 00:00:00.000000000 Z
12
+ date: 2013-09-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - !ruby/object:Gem::Dependency
31
+ name: mocha
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rack-test
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rake
16
64
  requirement: !ruby/object:Gem::Requirement
17
65
  none: false
18
66
  requirements:
19
67
  - - ! '>='
20
68
  - !ruby/object:Gem::Version
21
- version: 1.0.0
69
+ version: '0'
22
70
  type: :development
23
71
  prerelease: false
24
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +74,23 @@ dependencies:
26
74
  requirements:
27
75
  - - ! '>='
28
76
  - !ruby/object:Gem::Version
29
- version: 1.0.0
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rubocop
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
30
94
  - !ruby/object:Gem::Dependency
31
95
  name: redis
32
96
  requirement: !ruby/object:Gem::Requirement
@@ -51,6 +115,9 @@ dependencies:
51
115
  - - ! '>='
52
116
  - !ruby/object:Gem::Version
53
117
  version: 1.20.0
118
+ - - <
119
+ - !ruby/object:Gem::Version
120
+ version: '1.25'
54
121
  type: :runtime
55
122
  prerelease: false
56
123
  version_requirements: !ruby/object:Gem::Requirement
@@ -59,6 +126,9 @@ dependencies:
59
126
  - - ! '>='
60
127
  - !ruby/object:Gem::Version
61
128
  version: 1.20.0
129
+ - - <
130
+ - !ruby/object:Gem::Version
131
+ version: '1.25'
62
132
  - !ruby/object:Gem::Dependency
63
133
  name: rufus-scheduler
64
134
  requirement: !ruby/object:Gem::Requirement
@@ -85,10 +155,14 @@ extensions: []
85
155
  extra_rdoc_files: []
86
156
  files:
87
157
  - .gitignore
158
+ - .rubocop.yml
159
+ - .travis.yml
160
+ - AUTHORS.md
161
+ - CONTRIBUTING.md
88
162
  - Gemfile
89
163
  - HISTORY.md
90
164
  - LICENSE
91
- - README.markdown
165
+ - README.md
92
166
  - Rakefile
93
167
  - lib/resque/scheduler.rb
94
168
  - lib/resque/scheduler/lock.rb
@@ -97,6 +171,7 @@ files:
97
171
  - lib/resque/scheduler/lock/resilient.rb
98
172
  - lib/resque/scheduler_locking.rb
99
173
  - lib/resque_scheduler.rb
174
+ - lib/resque_scheduler/logger_builder.rb
100
175
  - lib/resque_scheduler/plugin.rb
101
176
  - lib/resque_scheduler/server.rb
102
177
  - lib/resque_scheduler/server/views/delayed.erb
@@ -105,6 +180,7 @@ files:
105
180
  - lib/resque_scheduler/tasks.rb
106
181
  - lib/resque_scheduler/version.rb
107
182
  - resque-scheduler.gemspec
183
+ - script/migrate_to_timestamps_set.rb
108
184
  - tasks/resque_scheduler.rake
109
185
  - test/delayed_queue_test.rb
110
186
  - test/redis-test.conf
@@ -112,31 +188,48 @@ files:
112
188
  - test/scheduler_args_test.rb
113
189
  - test/scheduler_hooks_test.rb
114
190
  - test/scheduler_locking_test.rb
191
+ - test/scheduler_setup_test.rb
115
192
  - test/scheduler_test.rb
116
193
  - test/support/redis_instance.rb
117
194
  - test/test_helper.rb
118
- homepage: http://github.com/bvandenbos/resque-scheduler
195
+ homepage: http://github.com/resque/resque-scheduler
119
196
  licenses: []
120
197
  post_install_message:
121
198
  rdoc_options: []
122
199
  require_paths:
123
- - lib
200
+ - - lib
124
201
  required_ruby_version: !ruby/object:Gem::Requirement
125
202
  none: false
126
203
  requirements:
127
204
  - - ! '>='
128
205
  - !ruby/object:Gem::Version
129
206
  version: '0'
207
+ segments:
208
+ - 0
209
+ hash: 2224918234097590124
130
210
  required_rubygems_version: !ruby/object:Gem::Requirement
131
211
  none: false
132
212
  requirements:
133
213
  - - ! '>='
134
214
  - !ruby/object:Gem::Version
135
- version: 1.3.6
215
+ version: '0'
216
+ segments:
217
+ - 0
218
+ hash: 2224918234097590124
136
219
  requirements: []
137
220
  rubyforge_project:
138
221
  rubygems_version: 1.8.23
139
222
  signing_key:
140
223
  specification_version: 3
141
224
  summary: Light weight job scheduling on top of Resque
142
- test_files: []
225
+ test_files:
226
+ - test/delayed_queue_test.rb
227
+ - test/redis-test.conf
228
+ - test/resque-web_test.rb
229
+ - test/scheduler_args_test.rb
230
+ - test/scheduler_hooks_test.rb
231
+ - test/scheduler_locking_test.rb
232
+ - test/scheduler_setup_test.rb
233
+ - test/scheduler_test.rb
234
+ - test/support/redis_instance.rb
235
+ - test/test_helper.rb