simple_queues 1.0.2 → 1.0.3
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.
- data/lib/simple_queues/redis.rb +18 -6
- data/lib/simple_queues/version.rb +1 -1
- data/spec/redis_integration_spec.rb +14 -0
- metadata +2 -2
data/lib/simple_queues/redis.rb
CHANGED
@@ -25,9 +25,7 @@ module SimpleQueues
|
|
25
25
|
# @return No useful value.
|
26
26
|
# @raise ArgumentError Whenever the queue name or the message are nil, or the queue name is empty.
|
27
27
|
def enqueue(queue_name, message)
|
28
|
-
|
29
|
-
raise ArgumentError, "Message argument was nil - must not be" if message.nil?
|
30
|
-
@redis.rpush(queue_name.to_s, serialize(message))
|
28
|
+
@redis.rpush(q_name(queue_name), serialize(message))
|
31
29
|
end
|
32
30
|
|
33
31
|
# Dequeues a message, and waits forever for one to arrive.
|
@@ -39,6 +37,14 @@ module SimpleQueues
|
|
39
37
|
dequeue_with_timeout(queue_name, 0)
|
40
38
|
end
|
41
39
|
|
40
|
+
def clear(queue_name)
|
41
|
+
@redis.ltrim(q_name(queue_name), 1, 0)
|
42
|
+
end
|
43
|
+
|
44
|
+
def size(queue_name)
|
45
|
+
@redis.llen(q_name(queue_name))
|
46
|
+
end
|
47
|
+
|
42
48
|
# Dequeues a message, or returns +nil+ if the timeout is exceeded.
|
43
49
|
#
|
44
50
|
# @param queue_name [String, Symbol] The queue name to read from.
|
@@ -46,9 +52,15 @@ module SimpleQueues
|
|
46
52
|
# @return [String, nil] The first message in the queue, or nil if the timeout was exceeded.
|
47
53
|
# @raise ArgumentError If +queue_name+ is nil or the empty String.
|
48
54
|
def dequeue_with_timeout(queue_name, timeout)
|
49
|
-
|
50
|
-
|
51
|
-
|
55
|
+
queue, result = @redis.blpop(q_name(queue_name), timeout)
|
56
|
+
unserialize(result)
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
def q_name(queue_name)
|
61
|
+
queue_name &&= queue_name.to_s
|
62
|
+
raise ArgumentError, "Queue name argument was nil - must not be" if queue_name.nil? || queue_name.empty?
|
63
|
+
queue_name
|
52
64
|
end
|
53
65
|
end
|
54
66
|
end
|
@@ -12,4 +12,18 @@ describe SimpleQueues::Redis, "enqueue" do
|
|
12
12
|
queue.dequeue_with_timeout(:test, 2).should == nil
|
13
13
|
end
|
14
14
|
|
15
|
+
it "clears the queue" do
|
16
|
+
queue.enqueue(:test, 42)
|
17
|
+
queue.clear(:test)
|
18
|
+
queue.dequeue_with_timeout(:test, 1).should == nil
|
19
|
+
end
|
20
|
+
|
21
|
+
it "returns the queue size" do
|
22
|
+
queue.clear(:test)
|
23
|
+
queue.enqueue(:test, 42)
|
24
|
+
queue.enqueue(:test, 42)
|
25
|
+
queue.enqueue(:test, 42)
|
26
|
+
queue.enqueue(:test, 42)
|
27
|
+
queue.size(:test).should == 4
|
28
|
+
end
|
15
29
|
end
|