resque_unit 0.3.7 → 0.4.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.
@@ -21,9 +21,9 @@ module ResqueUnit::Assertions
21
21
  queue = if block_given?
22
22
  snapshot = Resque.size(queue_name)
23
23
  yield
24
- Resque.queue(queue_name)[snapshot..-1]
24
+ Resque.all(queue_name)[snapshot..-1]
25
25
  else
26
- Resque.queue(queue_name)
26
+ Resque.all(queue_name)
27
27
  end
28
28
 
29
29
  assert_with_custom_message(!in_queue?(queue, klass, args),
@@ -43,9 +43,9 @@ module ResqueUnit::Assertions
43
43
  queue = if block_given?
44
44
  snapshot = Resque.size(queue_name)
45
45
  yield
46
- Resque.queue(queue_name)[snapshot..-1]
46
+ Resque.all(queue_name)[snapshot..-1]
47
47
  else
48
- Resque.queue(queue_name)
48
+ Resque.all(queue_name)
49
49
  end
50
50
 
51
51
  assert_with_custom_message(in_queue?(queue, klass, args),
@@ -74,13 +74,8 @@ module ResqueUnit::Assertions
74
74
  end
75
75
 
76
76
  def matching_jobs(queue, klass, args = nil)
77
- queue = Resque.queue(queue) if queue.is_a? Symbol
78
- if args # retrieve the elements that match klass and args in the queue
79
- args = Resque.normalized_args(args)
80
- queue.select {|e| e[:klass] == klass && e[:args] == args}
81
- else # if no args were passed, retrieve all queued jobs that match klass
82
- queue.select {|e| e[:klass] == klass}
83
- end
77
+ normalized_args = Resque.decode(Resque.encode(args)) if args
78
+ queue.select {|e| e["class"] == klass.to_s && (!args || e["args"] == normalized_args )}
84
79
  end
85
80
 
86
81
  end
@@ -13,7 +13,7 @@ module Resque
13
13
  # Given a string, returns a Ruby object.
14
14
  def decode(object)
15
15
  return unless object
16
-
16
+
17
17
  if defined? Yajl
18
18
  begin
19
19
  Yajl::Parser.parse(object, :check_utf8 => false)
@@ -24,13 +24,42 @@ module Resque
24
24
  end
25
25
 
26
26
  # Returns an array of all the jobs that have been queued. Each
27
- # element is of the form +{:klass => klass, :args => args}+ where
27
+ # element is of the form +{"class" => klass, "args" => args}+ where
28
28
  # +klass+ is the job's class and +args+ is an array of the arguments
29
29
  # passed to the job.
30
30
  def queue(queue_name)
31
31
  queues[queue_name]
32
32
  end
33
33
 
34
+ # Return an array of all jobs' payloads for queue
35
+ # Elements are decoded
36
+ def all(queue_name)
37
+ result = list_range(queue_name, 0, size(queue_name))
38
+ result.is_a?(Array) ? result : [ result ]
39
+ end
40
+
41
+ # Returns an array of jobs' payloads for queue.
42
+ #
43
+ # start and count should be integer and can be used for pagination.
44
+ # start is the item to begin, count is how many items to return.
45
+ #
46
+ # To get the 3rd page of a 30 item, paginatied list one would use:
47
+ # Resque.peek('my_list', 59, 30)
48
+ def peek(queue_name, start = 0, count = 1)
49
+ list_range(queue_name, start, count)
50
+ end
51
+
52
+ # Gets a range of jobs' payloads from queue.
53
+ # Returns single element if count equal 1
54
+ # Elements are decoded
55
+ def list_range(key, start = 0, count = 1)
56
+ data = if count == 1
57
+ decode(queues[key][start])
58
+ else
59
+ (queues[key][start...start + count] || []).map { |entry| decode(entry) }
60
+ end
61
+ end
62
+
34
63
  # Yes, all Resque hooks!
35
64
  def enable_hooks!
36
65
  @hooks_enabled = true
@@ -45,20 +74,23 @@ module Resque
45
74
  old_queue = @queue.dup
46
75
  self.reset!
47
76
 
48
- old_queue.each do |k, v|
49
- while job = v.shift
50
- @hooks_enabled ? perform_with_hooks(job) : perform_without_hooks(job)
77
+
78
+ old_queue.each do |queue_name, queue|
79
+ queue.each do |job_payload|
80
+ job_payload = decode(job_payload)
81
+ @hooks_enabled ? perform_with_hooks(job_payload) : perform_without_hooks(job_payload)
51
82
  end
52
83
  end
53
84
  end
54
85
 
55
86
  # Executes all jobs in the given queue in an undefined order.
56
87
  def run_for!(queue_name)
57
- jobs = self.queue(queue_name)
88
+ jobs_payloads = all(queue_name)
89
+
58
90
  self.reset!(queue_name)
59
91
 
60
- while job = jobs.shift
61
- @hooks_enabled ? perform_with_hooks(job) : perform_without_hooks(job)
92
+ jobs_payloads.each do |job_payload|
93
+ @hooks_enabled ? perform_with_hooks(job_payload) : perform_without_hooks(job_payload)
62
94
  end
63
95
  end
64
96
 
@@ -83,11 +115,7 @@ module Resque
83
115
  queue_name = queue_for(klass)
84
116
  # Behaves like Resque, raise if no queue was specifed
85
117
  raise NoQueueError.new("Jobs must be placed onto a queue.") unless queue_name
86
- enqueue_unit(queue_name, {:klass => klass, :args => normalized_args(args) })
87
- end
88
-
89
- def normalized_args(args)
90
- decode(encode(args))
118
+ enqueue_unit(queue_name, {"class" => klass.name, "args" => args })
91
119
  end
92
120
 
93
121
  # :nodoc:
@@ -103,33 +131,35 @@ module Resque
103
131
  end
104
132
 
105
133
  def enqueue_unit(queue_name, hash)
106
- queue(queue_name) << hash
134
+ klass = constantize(hash["class"])
135
+ queue(queue_name) << encode(hash)
107
136
  if @hooks_enabled
108
- Plugin.after_enqueue_hooks(hash[:klass]).each do |hook|
109
- hash[:klass].send(hook, *hash[:args])
137
+ Plugin.after_enqueue_hooks(klass).each do |hook|
138
+ klass.send(hook, *hash["args"])
110
139
  end
111
140
  end
112
141
  queue(queue_name).size
113
142
  end
114
143
 
115
144
  # Call perform on the job class
116
- def perform_without_hooks(job)
117
- job[:klass].perform(*job[:args])
145
+ def perform_without_hooks(job_payload)
146
+ constantize(job_payload["class"]).perform(*job_payload["args"])
118
147
  end
119
148
 
120
149
  # Call perform on the job class, and adds support for Resque hooks.
121
- def perform_with_hooks(job)
122
- before_hooks = Resque::Plugin.before_hooks(job[:klass])
123
- around_hooks = Resque::Plugin.around_hooks(job[:klass])
124
- after_hooks = Resque::Plugin.after_hooks(job[:klass])
125
- failure_hooks = Resque::Plugin.failure_hooks(job[:klass])
150
+ def perform_with_hooks(job_payload)
151
+ job_class = constantize(job_payload["class"])
152
+ before_hooks = Resque::Plugin.before_hooks(job_class)
153
+ around_hooks = Resque::Plugin.around_hooks(job_class)
154
+ after_hooks = Resque::Plugin.after_hooks(job_class)
155
+ failure_hooks = Resque::Plugin.failure_hooks(job_class)
126
156
 
127
157
  begin
128
158
  # Execute before_perform hook. Abort the job gracefully if
129
159
  # Resque::DontPerform is raised.
130
160
  begin
131
161
  before_hooks.each do |hook|
132
- job[:klass].send(hook, *job[:args])
162
+ job_class.send(hook, *job_payload["args"])
133
163
  end
134
164
  rescue Resque::Job::DontPerform
135
165
  return false
@@ -137,7 +167,7 @@ module Resque
137
167
 
138
168
  # Execute the job. Do it in an around_perform hook if available.
139
169
  if around_hooks.empty?
140
- perform_without_hooks(job)
170
+ perform_without_hooks(job_payload)
141
171
  job_was_performed = true
142
172
  else
143
173
  # We want to nest all around_perform plugins, with the last one
@@ -145,12 +175,12 @@ module Resque
145
175
  stack = around_hooks.reverse.inject(nil) do |last_hook, hook|
146
176
  if last_hook
147
177
  lambda do
148
- job[:klass].send(hook, *job[:args]) { last_hook.call }
178
+ job_class.send(hook, *job_payload["args"]) { last_hook.call }
149
179
  end
150
180
  else
151
181
  lambda do
152
- job[:klass].send(hook, *job[:args]) do
153
- result = perform_without_hooks(job)
182
+ job_class.send(hook, *job_payload["args"]) do
183
+ result = perform_without_hooks(job_payload)
154
184
  job_was_performed = true
155
185
  result
156
186
  end
@@ -162,7 +192,7 @@ module Resque
162
192
 
163
193
  # Execute after_perform hook
164
194
  after_hooks.each do |hook|
165
- job[:klass].send(hook, *job[:args])
195
+ job_class.send(hook, *job_payload["args"])
166
196
  end
167
197
 
168
198
  # Return true if the job was performed
@@ -171,7 +201,7 @@ module Resque
171
201
  # If an exception occurs during the job execution, look for an
172
202
  # on_failure hook then re-raise.
173
203
  rescue => e
174
- failure_hooks.each { |hook| job[:klass].send(hook, e, *job[:args]) }
204
+ failure_hooks.each { |hook| job_class.send(hook, e, *job_payload["args"]) }
175
205
  raise e
176
206
  end
177
207
  end
@@ -179,7 +209,7 @@ module Resque
179
209
  class Job
180
210
  extend Helpers
181
211
  def self.create(queue, klass_name, *args)
182
- Resque.enqueue_unit(queue, {:klass => constantize(klass_name), :args => decode(encode(args))})
212
+ Resque.enqueue_unit(queue, {"class" => constantize(klass_name), "args" => args})
183
213
  end
184
214
  end
185
215
 
@@ -19,17 +19,14 @@ module ResqueUnit
19
19
  end
20
20
 
21
21
  def enqueue_with_timestamp(timestamp, klass, *args)
22
- enqueue_unit(queue_for(klass), {:klass => klass, :args => decode(encode(args)), :timestamp => timestamp})
22
+ enqueue_unit(queue_for(klass), {"class" => klass, "args" => args, "timestamp" => timestamp})
23
23
  end
24
24
 
25
25
  def remove_delayed(klass, *args)
26
- queue = Resque.queue(queue_for(klass))
27
- if args # retrieve the elements that match klass and args in the queue
28
- args = Resque.normalized_args(args)
29
- queue.delete_if { |e| e[:klass] == klass && e[:args] == args }
30
- else # if no args were passed, retrieve all queued jobs that match klass
31
- queue.delete_if {|e| e[:klass] == klass}
32
- end
26
+ # points to real queue
27
+ encoded_job_payloads = Resque.queue(queue_for(klass))
28
+ args ||= []
29
+ encoded_job_payloads.delete_if { |e| e = Resque.decode(e); e["class"] == klass.to_s && e["args"] == args }
33
30
  end
34
31
  end
35
32
 
@@ -1,5 +1,7 @@
1
1
  # These are a group of assertions you can use in your unit tests to
2
2
  # verify that your code is using resque-scheduler correctly.
3
+ require 'time'
4
+
3
5
  module ResqueUnit::SchedulerAssertions
4
6
 
5
7
  # Asserts that +klass+ has been queued into its appropriate queue at
@@ -41,7 +43,7 @@ module ResqueUnit::SchedulerAssertions
41
43
  def in_timestamped_queue?(queue_name, expected_timestamp, klass, args = nil)
42
44
  # check if we have any matching jobs with a timestamp less than
43
45
  # expected_timestamp
44
- !matching_jobs(Resque.queue(queue_name), klass, args).select {|e| e[:timestamp] && e[:timestamp] <= expected_timestamp}.empty?
46
+ !matching_jobs(Resque.all(queue_name), klass, args).select {|e| e["timestamp"] && Time.parse(e["timestamp"]) <= expected_timestamp}.empty?
45
47
  end
46
48
 
47
49
  end
@@ -0,0 +1,61 @@
1
+ require 'test_helper'
2
+
3
+ class ResqueTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ Resque.reset!
7
+ end
8
+
9
+ context "with one queued job" do
10
+ setup do
11
+ Resque.enqueue(MediumPriorityJob, "some args")
12
+ @job_payload = {"args"=>["some args"], "class"=>"MediumPriorityJob"}
13
+ end
14
+
15
+ should "return job payload when peek method called with count equal 1" do
16
+ assert_equal @job_payload, Resque.peek(MediumPriorityJob.queue, 0, 1)
17
+ end
18
+
19
+ should "return array of jobs' payloads when peek method called with count different than 1" do
20
+ assert_equal [@job_payload], Resque.peek(MediumPriorityJob.queue, 0, 5)
21
+ end
22
+ end
23
+
24
+ context "with few queued jobs" do
25
+ setup do
26
+ Resque.enqueue(MediumPriorityJob, "1")
27
+ Resque.enqueue(MediumPriorityJob, "2")
28
+ Resque.enqueue(MediumPriorityJob, "3")
29
+ end
30
+
31
+ should "return jobs' payloads 2 and 3 when peek method called with start equal 1 and count equal 2" do
32
+ assert_equal [["2"], ["3"]], Resque.peek(MediumPriorityJob.queue, 1, 2).map{|h| h["args"]}
33
+ end
34
+
35
+ should "return empty array when peek method called with start higher than queue size" do
36
+ assert_equal [], Resque.peek(MediumPriorityJob.queue, 4, 2)
37
+ end
38
+
39
+ should "return empty array when peek method called with count equal 0" do
40
+ assert_equal [], Resque.peek(MediumPriorityJob.queue, 0, 0)
41
+ end
42
+
43
+ should "return all jobs' payloads when all method called" do
44
+ assert Resque.all(MediumPriorityJob.queue).length == 3, "should return all 3 elements"
45
+ end
46
+ end
47
+
48
+ context "without queued jobs" do
49
+ should "return nil when peek method called with count equal 1" do
50
+ assert_equal nil, Resque.peek(MediumPriorityJob.queue, 0, 1)
51
+ end
52
+
53
+ should "return empty array when peek method called with count not equal 1" do
54
+ assert_equal [], Resque.peek(MediumPriorityJob.queue, 0, 999)
55
+ end
56
+
57
+ should "return empty array when all method called" do
58
+ assert_equal [], Resque.all(MediumPriorityJob.queue)
59
+ end
60
+ end
61
+ end
@@ -65,49 +65,77 @@ class ResqueUnitTest < Test::Unit::TestCase
65
65
  context "A task that schedules a resque job with hooks" do
66
66
  setup do
67
67
  Resque.enable_hooks!
68
- JobWithHooks.clear_markers
69
- Resque.enqueue(JobWithHooks)
70
68
  end
71
69
 
72
70
  teardown do
73
71
  Resque.disable_hooks!
74
72
  end
75
73
 
76
- should "have run the after_enqueue hook" do
77
- assert_queued(JobWithHooks)
78
- assert(JobWithHooks.markers[:after_enqueue], 'no after_queue marker set')
79
- end
74
+ context "before, around, after, failure, after_enqueue" do
75
+ setup do
76
+ JobWithHooks.clear_markers
77
+ Resque.enqueue(JobWithHooks)
78
+ end
80
79
 
81
- should "run the before and after hooks during a run" do
82
- Resque.run!
83
- assert(JobWithHooks.markers[:before], 'no before marker set')
84
- assert(JobWithHooks.markers[:around], 'no around marker set')
85
- assert(JobWithHooks.markers[:after], 'no after marker set')
86
- assert(!JobWithHooks.markers[:failed], 'failed marker set, and it should not')
87
- end
80
+ should "have run the after_enqueue hook" do
81
+ assert_queued(JobWithHooks)
82
+ assert(JobWithHooks.markers[:after_enqueue], 'no after_queue marker set')
83
+ end
84
+
85
+ should "run the before and after hooks during a run" do
86
+ Resque.run!
87
+ assert(JobWithHooks.markers[:before], 'no before marker set')
88
+ assert(JobWithHooks.markers[:around], 'no around marker set')
89
+ assert(JobWithHooks.markers[:after], 'no after marker set')
90
+ assert(!JobWithHooks.markers[:failed], 'failed marker set, and it should not')
91
+ end
88
92
 
89
- should "run the before and failed hooks during a run" do
90
- JobWithHooks.make_it_fail do
91
- assert_raise(RuntimeError) do
93
+ should "run the before and failed hooks during a run" do
94
+ JobWithHooks.make_it_fail do
95
+ assert_raise(RuntimeError) do
96
+ Resque.run!
97
+ assert(JobWithHooks.markers[:before], 'no before marker set')
98
+ assert(JobWithHooks.markers[:around], 'no around marker set')
99
+ assert(!JobWithHooks.markers[:after], 'after marker set, and it should not')
100
+ assert(JobWithHooks.markers[:failed], 'no failed marker set')
101
+ end
102
+ end
103
+ end
104
+
105
+ should "not call perform if the around hook raised Resque::Job::DontPerform" do
106
+ JobWithHooks.make_it_dont_perform do
92
107
  Resque.run!
93
108
  assert(JobWithHooks.markers[:before], 'no before marker set')
94
109
  assert(JobWithHooks.markers[:around], 'no around marker set')
95
110
  assert(!JobWithHooks.markers[:after], 'after marker set, and it should not')
96
- assert(JobWithHooks.markers[:failed], 'no failed marker set')
111
+ assert(!JobWithHooks.markers[:failed], 'failed marker set, and it should not')
97
112
  end
98
113
  end
99
114
  end
100
115
 
101
- should "not call perform if the around hook raised Resque::Job::DontPerform" do
102
- JobWithHooks.make_it_dont_perform do
116
+ context "but without before" do
117
+ setup do
118
+ JobWithHooksWithoutBefore.clear_markers
119
+ Resque.enqueue(JobWithHooksWithoutBefore)
120
+ end
121
+
122
+ should "not run before hooks during a run" do
103
123
  Resque.run!
104
- assert(JobWithHooks.markers[:before], 'no before marker set')
105
- assert(JobWithHooks.markers[:around], 'no around marker set')
106
- assert(!JobWithHooks.markers[:after], 'after marker set, and it should not')
107
- assert(!JobWithHooks.markers[:failed], 'failed marker set, and it should not')
124
+ assert(!JobWithHooksWithoutBefore.markers[:before], 'before marker set, and it should not')
108
125
  end
109
126
  end
110
127
 
128
+ context "but without around" do
129
+ setup do
130
+ JobWithHooksWithoutAround.clear_markers
131
+ Resque.enqueue(JobWithHooksWithoutAround)
132
+ end
133
+
134
+ should "not run around hooks during a run" do
135
+ Resque.run!
136
+ assert(!JobWithHooksWithoutAround.markers[:around], 'around marker set, and it should not')
137
+ end
138
+ end
111
139
  end
112
140
 
113
141
  context "Block assertions" do
@@ -117,14 +145,14 @@ class ResqueUnitTest < Test::Unit::TestCase
117
145
  end
118
146
  end
119
147
 
120
- should "pass the assert_queued(job) assertion when queued and not in block" do
148
+ should "pass the assert_queued(job) assertion when queued in block and outside" do
121
149
  Resque.enqueue(HighPriorityJob)
122
150
  assert_queues(HighPriorityJob) do
123
151
  Resque.enqueue(HighPriorityJob)
124
152
  end
125
153
  end
126
154
 
127
- should "fail the assert_queued(job) assertion when not queued in block" do
155
+ should "fail the assert_queued(job) assertion when not queued in block but outside" do
128
156
  Resque.enqueue(LowPriorityJob)
129
157
  assert_raise Test::Unit::AssertionFailedError do
130
158
  assert_queues(LowPriorityJob) do
@@ -49,10 +49,26 @@ class JobThatDoesNotSpecifyAQueue
49
49
  end
50
50
  end
51
51
 
52
+ module HooksMethods
53
+ def after_enqueue_mark(*args)
54
+ markers[:after_enqueue] = true
55
+ end
56
+
57
+ def after_perform_mark(*args)
58
+ markers[:after] = true
59
+ end
60
+
61
+ def failure_perform_mark(*args)
62
+ markers[:failure] = true
63
+ end
64
+ end
65
+
52
66
  class JobWithHooks
67
+ extend HooksMethods
68
+
53
69
  @queue = :with_hooks
54
70
  @markers = {}
55
-
71
+
56
72
  def self.perform
57
73
  raise 'FAIL!' if @will_fail
58
74
  end
@@ -65,10 +81,6 @@ class JobWithHooks
65
81
  @markers = {}
66
82
  end
67
83
 
68
- def self.after_enqueue_mark(*args)
69
- markers[:after_enqueue] = true
70
- end
71
-
72
84
  def self.before_perform_mark(*args)
73
85
  markers[:before] = true
74
86
  end
@@ -82,14 +94,6 @@ class JobWithHooks
82
94
  end
83
95
  end
84
96
 
85
- def self.after_perform_mark(*args)
86
- markers[:after] = true
87
- end
88
-
89
- def self.failure_perform_mark(*args)
90
- markers[:failure] = true
91
- end
92
-
93
97
  def self.make_it_fail(&block)
94
98
  @will_fail = true
95
99
  yield
@@ -102,5 +106,51 @@ class JobWithHooks
102
106
  ensure
103
107
  @dont_perform = false
104
108
  end
109
+ end
110
+
111
+ class JobWithHooksWithoutBefore
112
+ extend HooksMethods
113
+
114
+ @queue = :with_hooks
115
+ @markers = {}
116
+
117
+ def self.markers
118
+ @markers
119
+ end
105
120
 
106
- end
121
+ def self.clear_markers
122
+ @markers = {}
123
+ end
124
+
125
+ def self.perform; end
126
+
127
+ def self.around_perform_mark(*args)
128
+ markers[:around] = true
129
+ if @dont_perform
130
+ raise Resque::Job::DontPerform
131
+ else
132
+ yield
133
+ end
134
+ end
135
+ end
136
+
137
+ class JobWithHooksWithoutAround
138
+ extend HooksMethods
139
+
140
+ @queue = :with_hooks
141
+ @markers = {}
142
+
143
+ def self.markers
144
+ @markers
145
+ end
146
+
147
+ def self.clear_markers
148
+ @markers = {}
149
+ end
150
+
151
+ def self.perform; end
152
+
153
+ def self.before_perform_mark(*args)
154
+ markers[:before] = true
155
+ end
156
+ end
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque_unit
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 3
8
- - 7
9
- version: 0.3.7
4
+ prerelease:
5
+ version: 0.4.0
10
6
  platform: ruby
11
7
  authors:
12
8
  - Justin Weiss
@@ -14,7 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2011-04-26 00:00:00 -07:00
13
+ date: 2011-06-28 00:00:00 -07:00
18
14
  default_executable:
19
15
  dependencies:
20
16
  - !ruby/object:Gem::Dependency
@@ -24,10 +20,6 @@ dependencies:
24
20
  requirements:
25
21
  - - ">="
26
22
  - !ruby/object:Gem::Version
27
- segments:
28
- - 1
29
- - 4
30
- - 6
31
23
  version: 1.4.6
32
24
  type: :runtime
33
25
  prerelease: false
@@ -39,8 +31,6 @@ dependencies:
39
31
  requirements:
40
32
  - - ">="
41
33
  - !ruby/object:Gem::Version
42
- segments:
43
- - 0
44
34
  version: "0"
45
35
  type: :development
46
36
  prerelease: false
@@ -52,8 +42,6 @@ dependencies:
52
42
  requirements:
53
43
  - - ">="
54
44
  - !ruby/object:Gem::Version
55
- segments:
56
- - 0
57
45
  version: "0"
58
46
  type: :development
59
47
  prerelease: false
@@ -76,6 +64,7 @@ files:
76
64
  - lib/resque_unit/scheduler_assertions.rb
77
65
  - lib/resque_unit.rb
78
66
  - lib/resque_unit_scheduler.rb
67
+ - test/resque_test.rb
79
68
  - test/resque_unit_scheduler_test.rb
80
69
  - test/resque_unit_test.rb
81
70
  - test/sample_jobs.rb
@@ -95,7 +84,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
95
84
  requirements:
96
85
  - - ">="
97
86
  - !ruby/object:Gem::Version
98
- hash: -4275170874944831438
87
+ hash: -1898540308835741897
99
88
  segments:
100
89
  - 0
101
90
  version: "0"
@@ -104,17 +93,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
93
  requirements:
105
94
  - - ">="
106
95
  - !ruby/object:Gem::Version
107
- hash: -4275170874944831438
96
+ hash: -1898540308835741897
108
97
  segments:
109
98
  - 0
110
99
  version: "0"
111
100
  requirements: []
112
101
 
113
102
  rubyforge_project:
114
- rubygems_version: 1.3.7
103
+ rubygems_version: 1.5.0
115
104
  signing_key:
116
105
  specification_version: 3
117
106
  summary: Test::Unit support for resque job queueing
118
107
  test_files:
108
+ - test/resque_test.rb
119
109
  - test/resque_unit_scheduler_test.rb
120
110
  - test/resque_unit_test.rb