simple_queues 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- raise ArgumentError, "Queue name argument was nil - must not be" if queue_name.nil? || queue_name.to_s.empty?
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
- raise ArgumentError, "Queue name argument was nil - must not be" if queue_name.nil? || queue_name.to_s.empty?
50
- r = @redis.blpop(queue_name.to_s, timeout)
51
- unserialize(r && r[1])
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
@@ -1,3 +1,3 @@
1
1
  module SimpleQueues
2
- VERSION = "1.0.2"
2
+ VERSION = "1.0.3"
3
3
  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
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 2
9
- version: 1.0.2
8
+ - 3
9
+ version: 1.0.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - "Fran\xC3\xA7ois Beausoleil"