resque-scheduler 2.0.0.d → 2.0.0.e
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.
- data/.gitignore +1 -0
- data/Gemfile.lock +13 -21
- data/HISTORY.md +8 -0
- data/README.markdown +141 -165
- data/Rakefile +8 -0
- data/lib/resque/scheduler.rb +54 -20
- data/lib/resque_scheduler.rb +47 -12
- data/lib/resque_scheduler/server.rb +5 -0
- data/lib/resque_scheduler/server/views/delayed.erb +8 -2
- data/lib/resque_scheduler/tasks.rb +2 -1
- data/lib/resque_scheduler/version.rb +1 -1
- data/resque-scheduler.gemspec +3 -4
- data/test/delayed_queue_test.rb +37 -12
- data/test/scheduler_args_test.rb +10 -0
- data/test/scheduler_test.rb +51 -32
- data/test/test_helper.rb +11 -5
- metadata +71 -108
data/test/scheduler_args_test.rb
CHANGED
@@ -80,4 +80,14 @@ context "scheduling jobs with arguments" do
|
|
80
80
|
SomeIvarJob.expects(:perform).once.with('first_key' => {'second_key' => 'value'})
|
81
81
|
Resque.reserve('ivar').perform
|
82
82
|
end
|
83
|
+
|
84
|
+
test "poll_sleep_amount defaults to 5" do
|
85
|
+
assert_equal 5, Resque::Scheduler.poll_sleep_amount
|
86
|
+
end
|
87
|
+
|
88
|
+
test "poll_sleep_amount is settable" do
|
89
|
+
Resque::Scheduler.poll_sleep_amount = 1
|
90
|
+
assert_equal 1, Resque::Scheduler.poll_sleep_amount
|
91
|
+
end
|
92
|
+
|
83
93
|
end
|
data/test/scheduler_test.rb
CHANGED
@@ -31,10 +31,10 @@ class Resque::SchedulerTest < Test::Unit::TestCase
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_enqueue_from_config_puts_stuff_in_the_resque_queue
|
34
|
-
Resque::Job.stubs(:create).once.returns(true).with(:ivar,
|
34
|
+
Resque::Job.stubs(:create).once.returns(true).with(:ivar, SomeIvarJob, '/tmp')
|
35
35
|
Resque::Scheduler.enqueue_from_config('cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp")
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
def test_enqueue_from_config_with_custom_class_job_in_the_resque_queue
|
39
39
|
FakeJob.stubs(:scheduled).once.returns(true).with(:ivar, 'SomeIvarJob', '/tmp')
|
40
40
|
Resque::Scheduler.enqueue_from_config('cron' => "* * * * *", 'class' => 'SomeIvarJob', 'custom_job_class' => 'Resque::SchedulerTest::FakeJob', 'args' => "/tmp")
|
@@ -78,6 +78,25 @@ class Resque::SchedulerTest < Test::Unit::TestCase
|
|
78
78
|
assert_equal(1, Resque::Scheduler.rufus_scheduler.all_jobs.size)
|
79
79
|
end
|
80
80
|
|
81
|
+
def test_enqueue_constantizes
|
82
|
+
# The job should be loaded, since a missing rails_env means ALL envs.
|
83
|
+
ENV['RAILS_ENV'] = 'production'
|
84
|
+
config = {'cron' => "* * * * *", 'class' => 'SomeRealClass', 'args' => "/tmp"}
|
85
|
+
Resque::Job.expects(:create).with(SomeRealClass.queue, SomeRealClass, '/tmp')
|
86
|
+
Resque::Scheduler.enqueue_from_config(config)
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_enqueue_runs_hooks
|
90
|
+
# The job should be loaded, since a missing rails_env means ALL envs.
|
91
|
+
ENV['RAILS_ENV'] = 'production'
|
92
|
+
config = {'cron' => "* * * * *", 'class' => 'SomeRealClass', 'args' => "/tmp"}
|
93
|
+
|
94
|
+
Resque::Job.expects(:create).with(SomeRealClass.queue, SomeRealClass, '/tmp')
|
95
|
+
SomeRealClass.expects(:after_enqueue_example)
|
96
|
+
|
97
|
+
Resque::Scheduler.enqueue_from_config(config)
|
98
|
+
end
|
99
|
+
|
81
100
|
def test_config_makes_it_into_the_rufus_scheduler
|
82
101
|
assert_equal(0, Resque::Scheduler.rufus_scheduler.all_jobs.size)
|
83
102
|
|
@@ -87,53 +106,53 @@ class Resque::SchedulerTest < Test::Unit::TestCase
|
|
87
106
|
assert_equal(1, Resque::Scheduler.rufus_scheduler.all_jobs.size)
|
88
107
|
assert Resque::Scheduler.scheduled_jobs.include?(:some_ivar_job)
|
89
108
|
end
|
90
|
-
|
109
|
+
|
91
110
|
def test_can_reload_schedule
|
92
111
|
Resque::Scheduler.dynamic = true
|
93
112
|
Resque.schedule = {"some_ivar_job" => {'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp"}}
|
94
|
-
|
113
|
+
|
95
114
|
Resque::Scheduler.load_schedule!
|
96
115
|
|
97
116
|
assert_equal(1, Resque::Scheduler.rufus_scheduler.all_jobs.size)
|
98
117
|
assert Resque::Scheduler.scheduled_jobs.include?("some_ivar_job")
|
99
|
-
|
118
|
+
|
100
119
|
Resque.redis.del(:schedules)
|
101
120
|
Resque.redis.hset(:schedules, "some_ivar_job2", Resque.encode(
|
102
121
|
{'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/2"}
|
103
122
|
))
|
104
|
-
|
123
|
+
|
105
124
|
Resque::Scheduler.reload_schedule!
|
106
|
-
|
125
|
+
|
107
126
|
assert_equal(1, Resque::Scheduler.rufus_scheduler.all_jobs.size)
|
108
|
-
|
127
|
+
|
109
128
|
assert_equal '/tmp/2', Resque.schedule["some_ivar_job2"]["args"]
|
110
129
|
assert Resque::Scheduler.scheduled_jobs.include?("some_ivar_job2")
|
111
130
|
end
|
112
|
-
|
131
|
+
|
113
132
|
def test_load_schedule_job
|
114
133
|
Resque::Scheduler.load_schedule_job("some_ivar_job", {'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp"})
|
115
|
-
|
134
|
+
|
116
135
|
assert_equal(1, Resque::Scheduler.rufus_scheduler.all_jobs.size)
|
117
136
|
assert_equal(1, Resque::Scheduler.scheduled_jobs.size)
|
118
137
|
assert Resque::Scheduler.scheduled_jobs.keys.include?("some_ivar_job")
|
119
138
|
end
|
120
|
-
|
139
|
+
|
121
140
|
def test_load_schedule_job_with_no_cron
|
122
141
|
Resque::Scheduler.load_schedule_job("some_ivar_job", {'class' => 'SomeIvarJob', 'args' => "/tmp"})
|
123
|
-
|
142
|
+
|
124
143
|
assert_equal(0, Resque::Scheduler.rufus_scheduler.all_jobs.size)
|
125
144
|
assert_equal(0, Resque::Scheduler.scheduled_jobs.size)
|
126
145
|
assert !Resque::Scheduler.scheduled_jobs.keys.include?("some_ivar_job")
|
127
146
|
end
|
128
|
-
|
147
|
+
|
129
148
|
def test_load_schedule_job_with_blank_cron
|
130
149
|
Resque::Scheduler.load_schedule_job("some_ivar_job", {'cron' => '', 'class' => 'SomeIvarJob', 'args' => "/tmp"})
|
131
|
-
|
150
|
+
|
132
151
|
assert_equal(0, Resque::Scheduler.rufus_scheduler.all_jobs.size)
|
133
152
|
assert_equal(0, Resque::Scheduler.scheduled_jobs.size)
|
134
153
|
assert !Resque::Scheduler.scheduled_jobs.keys.include?("some_ivar_job")
|
135
154
|
end
|
136
|
-
|
155
|
+
|
137
156
|
def test_update_schedule
|
138
157
|
Resque::Scheduler.dynamic = true
|
139
158
|
Resque.schedule = {
|
@@ -141,9 +160,9 @@ class Resque::SchedulerTest < Test::Unit::TestCase
|
|
141
160
|
"another_ivar_job" => {'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/5"},
|
142
161
|
"stay_put_job" => {'cron' => "* * * * *", 'class' => 'SomeJob', 'args' => "/tmp"}
|
143
162
|
}
|
144
|
-
|
163
|
+
|
145
164
|
Resque::Scheduler.load_schedule!
|
146
|
-
|
165
|
+
|
147
166
|
Resque.set_schedule("some_ivar_job",
|
148
167
|
{'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/2"}
|
149
168
|
)
|
@@ -154,9 +173,9 @@ class Resque::SchedulerTest < Test::Unit::TestCase
|
|
154
173
|
{'cron' => "* * * * *", 'class' => 'SomeJob', 'args' => "/tmp"}
|
155
174
|
)
|
156
175
|
Resque.remove_schedule("another_ivar_job")
|
157
|
-
|
176
|
+
|
158
177
|
Resque::Scheduler.update_schedule
|
159
|
-
|
178
|
+
|
160
179
|
assert_equal(3, Resque::Scheduler.rufus_scheduler.all_jobs.size)
|
161
180
|
assert_equal(3, Resque::Scheduler.scheduled_jobs.size)
|
162
181
|
%w(some_ivar_job new_ivar_job stay_put_job).each do |job_name|
|
@@ -167,7 +186,7 @@ class Resque::SchedulerTest < Test::Unit::TestCase
|
|
167
186
|
assert !Resque.schedule.keys.include?("another_ivar_job")
|
168
187
|
assert_equal 0, Resque.redis.scard(:schedules_changed)
|
169
188
|
end
|
170
|
-
|
189
|
+
|
171
190
|
def test_update_schedule_with_mocks
|
172
191
|
Resque::Scheduler.dynamic = true
|
173
192
|
Resque.schedule = {
|
@@ -175,12 +194,12 @@ class Resque::SchedulerTest < Test::Unit::TestCase
|
|
175
194
|
"another_ivar_job" => {'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/5"},
|
176
195
|
"stay_put_job" => {'cron' => "* * * * *", 'class' => 'SomeJob', 'args' => "/tmp"}
|
177
196
|
}
|
178
|
-
|
197
|
+
|
179
198
|
Resque::Scheduler.load_schedule!
|
180
|
-
|
199
|
+
|
181
200
|
Resque::Scheduler.rufus_scheduler.expects(:unschedule).with(Resque::Scheduler.scheduled_jobs["some_ivar_job"].job_id)
|
182
201
|
Resque::Scheduler.rufus_scheduler.expects(:unschedule).with(Resque::Scheduler.scheduled_jobs["another_ivar_job"].job_id)
|
183
|
-
|
202
|
+
|
184
203
|
Resque.set_schedule("some_ivar_job",
|
185
204
|
{'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/2"}
|
186
205
|
)
|
@@ -191,9 +210,9 @@ class Resque::SchedulerTest < Test::Unit::TestCase
|
|
191
210
|
{'cron' => "* * * * *", 'class' => 'SomeJob', 'args' => "/tmp"}
|
192
211
|
)
|
193
212
|
Resque.remove_schedule("another_ivar_job")
|
194
|
-
|
213
|
+
|
195
214
|
Resque::Scheduler.update_schedule
|
196
|
-
|
215
|
+
|
197
216
|
assert_equal(3, Resque::Scheduler.scheduled_jobs.size)
|
198
217
|
%w(some_ivar_job new_ivar_job stay_put_job).each do |job_name|
|
199
218
|
assert Resque::Scheduler.scheduled_jobs.keys.include?(job_name)
|
@@ -203,33 +222,33 @@ class Resque::SchedulerTest < Test::Unit::TestCase
|
|
203
222
|
assert !Resque.schedule.keys.include?("another_ivar_job")
|
204
223
|
assert_equal 0, Resque.redis.scard(:schedules_changed)
|
205
224
|
end
|
206
|
-
|
225
|
+
|
207
226
|
def test_set_schedules
|
208
227
|
Resque::Scheduler.dynamic = true
|
209
228
|
Resque.schedule = {"my_ivar_job" => {
|
210
229
|
'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/75"
|
211
230
|
}}
|
212
|
-
assert_equal({'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/75"},
|
231
|
+
assert_equal({'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/75"},
|
213
232
|
Resque.decode(Resque.redis.hget(:schedules, "my_ivar_job")))
|
214
233
|
end
|
215
|
-
|
234
|
+
|
216
235
|
def test_set_schedule
|
217
236
|
Resque.set_schedule("some_ivar_job", {
|
218
237
|
'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/22"
|
219
238
|
})
|
220
|
-
assert_equal({'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/22"},
|
239
|
+
assert_equal({'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/22"},
|
221
240
|
Resque.decode(Resque.redis.hget(:schedules, "some_ivar_job")))
|
222
241
|
assert Resque.redis.sismember(:schedules_changed, "some_ivar_job")
|
223
242
|
end
|
224
|
-
|
243
|
+
|
225
244
|
def test_get_schedule
|
226
245
|
Resque.redis.hset(:schedules, "some_ivar_job2", Resque.encode(
|
227
246
|
{'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/33"}
|
228
247
|
))
|
229
|
-
assert_equal({'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/33"},
|
248
|
+
assert_equal({'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/33"},
|
230
249
|
Resque.get_schedule("some_ivar_job2"))
|
231
250
|
end
|
232
|
-
|
251
|
+
|
233
252
|
def test_remove_schedule
|
234
253
|
Resque.redis.hset(:schedules, "some_ivar_job3", Resque.encode(
|
235
254
|
{'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/44"}
|
data/test/test_helper.rb
CHANGED
@@ -59,11 +59,11 @@ def context(*args, &block)
|
|
59
59
|
klass = Class.new(defined?(ActiveSupport::TestCase) ? ActiveSupport::TestCase : Test::Unit::TestCase) do
|
60
60
|
def self.test(name, &block)
|
61
61
|
define_method("test_#{name.gsub(/\W/,'_')}", &block) if block
|
62
|
-
end
|
63
|
-
def self.xtest(*args) end
|
64
|
-
def self.setup(&block) define_method(:setup, &block) end
|
65
|
-
def self.teardown(&block) define_method(:teardown, &block) end
|
66
|
-
end
|
62
|
+
end
|
63
|
+
def self.xtest(*args) end
|
64
|
+
def self.setup(&block) define_method(:setup, &block) end
|
65
|
+
def self.teardown(&block) define_method(:teardown, &block) end
|
66
|
+
end
|
67
67
|
(class << klass; self end).send(:define_method, :name) { name.gsub(/\W/,'_') }
|
68
68
|
klass.class_eval &block
|
69
69
|
end
|
@@ -76,3 +76,9 @@ end
|
|
76
76
|
class SomeIvarJob < SomeJob
|
77
77
|
@queue = :ivar
|
78
78
|
end
|
79
|
+
|
80
|
+
class SomeRealClass
|
81
|
+
def self.queue
|
82
|
+
:some_real_queue
|
83
|
+
end
|
84
|
+
end
|
metadata
CHANGED
@@ -1,120 +1,91 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-scheduler
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 2
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- d
|
10
|
-
version: 2.0.0.d
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.0.e
|
5
|
+
prerelease: 6
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Ben VandenBos
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-09-16 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: bundler
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &2163772500 !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
segments:
|
30
|
-
- 1
|
31
|
-
- 0
|
32
|
-
- 0
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
33
21
|
version: 1.0.0
|
34
22
|
type: :development
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: redis
|
38
23
|
prerelease: false
|
39
|
-
|
24
|
+
version_requirements: *2163772500
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: redis
|
27
|
+
requirement: &2163770620 !ruby/object:Gem::Requirement
|
40
28
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
segments:
|
45
|
-
- 2
|
46
|
-
- 0
|
47
|
-
- 1
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
48
32
|
version: 2.0.1
|
49
33
|
type: :runtime
|
50
|
-
version_requirements: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: resque
|
53
34
|
prerelease: false
|
54
|
-
|
35
|
+
version_requirements: *2163770620
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: resque
|
38
|
+
requirement: &2163770140 !ruby/object:Gem::Requirement
|
55
39
|
none: false
|
56
|
-
requirements:
|
57
|
-
- -
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
60
|
-
- 1
|
61
|
-
- 8
|
62
|
-
- 0
|
63
|
-
version: 1.8.0
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.15.0
|
64
44
|
type: :runtime
|
65
|
-
version_requirements: *id003
|
66
|
-
- !ruby/object:Gem::Dependency
|
67
|
-
name: rufus-scheduler
|
68
45
|
prerelease: false
|
69
|
-
|
46
|
+
version_requirements: *2163770140
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rufus-scheduler
|
49
|
+
requirement: &2163769660 !ruby/object:Gem::Requirement
|
70
50
|
none: false
|
71
|
-
requirements:
|
72
|
-
- -
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
|
75
|
-
- 0
|
76
|
-
version: "0"
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
77
55
|
type: :runtime
|
78
|
-
version_requirements: *id004
|
79
|
-
- !ruby/object:Gem::Dependency
|
80
|
-
name: mocha
|
81
56
|
prerelease: false
|
82
|
-
|
57
|
+
version_requirements: *2163769660
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: mocha
|
60
|
+
requirement: &2163769160 !ruby/object:Gem::Requirement
|
83
61
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
88
|
-
- 0
|
89
|
-
version: "0"
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
90
66
|
type: :development
|
91
|
-
version_requirements: *id005
|
92
|
-
- !ruby/object:Gem::Dependency
|
93
|
-
name: rack-test
|
94
67
|
prerelease: false
|
95
|
-
|
68
|
+
version_requirements: *2163769160
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rack-test
|
71
|
+
requirement: &2163768680 !ruby/object:Gem::Requirement
|
96
72
|
none: false
|
97
|
-
requirements:
|
98
|
-
- -
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
|
101
|
-
- 0
|
102
|
-
version: "0"
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
103
77
|
type: :development
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
email:
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *2163768680
|
80
|
+
description: ! "Light weight job scheduling on top of Resque.\n Adds methods enqueue_at/enqueue_in
|
81
|
+
to schedule jobs in the future.\n Also supports queueing jobs on a fixed, cron-like
|
82
|
+
schedule."
|
83
|
+
email:
|
110
84
|
- bvandenbos@gmail.com
|
111
85
|
executables: []
|
112
|
-
|
113
86
|
extensions: []
|
114
|
-
|
115
87
|
extra_rdoc_files: []
|
116
|
-
|
117
|
-
files:
|
88
|
+
files:
|
118
89
|
- .gitignore
|
119
90
|
- Gemfile
|
120
91
|
- Gemfile.lock
|
@@ -138,39 +109,31 @@ files:
|
|
138
109
|
- test/scheduler_args_test.rb
|
139
110
|
- test/scheduler_test.rb
|
140
111
|
- test/test_helper.rb
|
141
|
-
has_rdoc: true
|
142
112
|
homepage: http://github.com/bvandenbos/resque-scheduler
|
143
113
|
licenses: []
|
144
|
-
|
145
114
|
post_install_message:
|
146
115
|
rdoc_options: []
|
147
|
-
|
148
|
-
require_paths:
|
116
|
+
require_paths:
|
149
117
|
- lib
|
150
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
151
119
|
none: false
|
152
|
-
requirements:
|
153
|
-
- -
|
154
|
-
- !ruby/object:Gem::Version
|
155
|
-
|
120
|
+
requirements:
|
121
|
+
- - ! '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
segments:
|
156
125
|
- 0
|
157
|
-
|
158
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
|
+
hash: -3350821914372278115
|
127
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
128
|
none: false
|
160
|
-
requirements:
|
161
|
-
- -
|
162
|
-
- !ruby/object:Gem::Version
|
163
|
-
segments:
|
164
|
-
- 1
|
165
|
-
- 3
|
166
|
-
- 6
|
129
|
+
requirements:
|
130
|
+
- - ! '>='
|
131
|
+
- !ruby/object:Gem::Version
|
167
132
|
version: 1.3.6
|
168
133
|
requirements: []
|
169
|
-
|
170
134
|
rubyforge_project:
|
171
|
-
rubygems_version: 1.
|
135
|
+
rubygems_version: 1.8.5
|
172
136
|
signing_key:
|
173
137
|
specification_version: 3
|
174
138
|
summary: Light weight job scheduling on top of Resque
|
175
139
|
test_files: []
|
176
|
-
|