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.
@@ -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"