Skip to content

Commit 2efbd78

Browse files
committed
normalize keys for @queues in Resque
1 parent eef9dc5 commit 2efbd78

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

lib/resque.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -140,15 +140,15 @@ def to_s
140140
#
141141
# Returns nothing
142142
def push(queue, item)
143-
@queues[queue] << item
143+
@queues[queue.to_s] << item
144144
end
145145

146146
# Pops a job off a queue. Queue name should be a string.
147147
#
148148
# Returns a Ruby object.
149149
def pop(queue)
150150
begin
151-
@queues[queue].pop(true)
151+
@queues[queue.to_s].pop(true)
152152
rescue ThreadError
153153
nil
154154
end
@@ -157,7 +157,7 @@ def pop(queue)
157157
# Returns an integer representing the size of a queue.
158158
# Queue name should be a string.
159159
def size(queue)
160-
@queues[queue].size
160+
@queues[queue.to_s].size
161161
end
162162

163163
# Returns an array of items currently queued. Queue name should be
@@ -169,7 +169,7 @@ def size(queue)
169169
# To get the 3rd page of a 30 item, paginatied list one would use:
170170
# Resque.peek('my_list', 59, 30)
171171
def peek(queue, start = 0, count = 1)
172-
@queues[queue].slice start, count
172+
@queues[queue.to_s].slice start, count
173173
end
174174

175175
# Does the dirty work of fetching a range of items from a Redis list
@@ -192,7 +192,7 @@ def queues
192192
# Given a queue name, completely deletes the queue.
193193
def remove_queue(queue)
194194
redis.srem(:queues, queue.to_s)
195-
@queues[queue].destroy
195+
@queues[queue.to_s].destroy
196196
end
197197

198198

test/resque_test.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,4 +277,21 @@
277277
Resque.inline = false
278278
end
279279
end
280+
281+
it "normalizes @queues' keys" do
282+
[:foo, "foo"].each do |queue|
283+
Resque.push(queue, GoodJob)
284+
Resque.size(queue)
285+
Resque.peek(queue)
286+
Resque.pop(queue)
287+
end
288+
289+
assert_equal 2, Resque.instance_variable_get("@queues").size
290+
assert_equal 2, Resque.queues.size
291+
292+
Resque.remove_queue(:foo)
293+
294+
assert_equal 1, Resque.instance_variable_get("@queues").size
295+
assert_equal 1, Resque.queues.size
296+
end
280297
end

0 commit comments

Comments
 (0)