iron_mq 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- iron_mq (2.0.0)
4
+ iron_mq (2.1.0)
5
5
  iron_core (>= 0.2.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -4,13 +4,13 @@ IronMQ Ruby Client
4
4
  Getting Started
5
5
  ==============
6
6
 
7
- 1. Install the gem:
7
+ 1\. Install the gem:
8
8
 
9
9
  gem install iron_mq
10
10
 
11
- 2. Setup your Iron.io credentials: http://dev.iron.io/articles/configuration/
11
+ 2\. Setup your Iron.io credentials: http://dev.iron.io/articles/configuration/
12
12
 
13
- 3. Create an IronMQ client object:
13
+ 3\. Create an IronMQ client object:
14
14
 
15
15
  @ironmq = IronMQ::Client.new()
16
16
 
@@ -28,8 +28,7 @@ Now you can use it:
28
28
 
29
29
  **Push** a message on the queue:
30
30
 
31
- msg = @queue.post("hello world!")
32
- p msg
31
+ @queue.post("hello world!")
33
32
 
34
33
  **Pop** a message off the queue:
35
34
 
@@ -87,14 +87,14 @@ module IronMQ
87
87
 
88
88
  # Used if lazy loading
89
89
  def load_queue
90
- q = @client.queues.get(:name=>name)
90
+ q = @client.queues.get(:name => name)
91
91
  @client.logger.debug "GOT Q: " + q.inspect
92
92
  @data = q.raw
93
93
  q
94
94
  end
95
95
 
96
96
  def clear()
97
- @client.queues.clear(:name=>name)
97
+ @client.queues.clear(:name => name)
98
98
  end
99
99
 
100
100
  def size
@@ -114,15 +114,39 @@ module IronMQ
114
114
  end
115
115
 
116
116
  def post(body, options={})
117
- @client.messages.post(body, options.merge(:queue_name=>name))
117
+ @client.messages.post(body, options.merge(:queue_name => name))
118
118
  end
119
119
 
120
120
  def get(options={})
121
- @client.messages.get(options.merge(:queue_name=>name))
121
+ @client.messages.get(options.merge(:queue_name => name))
122
+ end
123
+
124
+ # This will continuously poll for a message and pass it to the block. For example:
125
+ #
126
+ # queue.poll { |msg| puts msg.body }
127
+ #
128
+ # options:
129
+ # - :sleep_duration=>seconds => time between polls if msg is nil. default 1.
130
+ # - :break_on_nil=>true/false => if true, will break if msg is nil (ie: queue is empty)
131
+ def poll(options={}, &blk)
132
+ sleep_duration = options[:sleep_duration] || 1
133
+ while true
134
+ p options
135
+ msg = get(options)
136
+ if msg.nil?
137
+ if options[:break_if_nil]
138
+ break
139
+ else
140
+ sleep sleep_duration
141
+ end
142
+ end
143
+ yield msg
144
+ msg.delete
145
+ end
122
146
  end
123
147
 
124
148
  def delete(id, options={})
125
- @client.messages.delete(id, options.merge(:queue_name=>name))
149
+ @client.messages.delete(id, options.merge(:queue_name => name))
126
150
  end
127
151
 
128
152
  end
@@ -1,3 +1,3 @@
1
1
  module IronMQ
2
- VERSION = "2.1.0"
2
+ VERSION = "2.1.1"
3
3
  end
data/test/test_iron_mq.rb CHANGED
@@ -17,11 +17,11 @@ class IronMQTests < TestBase
17
17
  clear_queue()
18
18
 
19
19
  end
20
-
20
+
21
21
  def test_performance_post_100_messages
22
22
  @client.queue_name = 'test_basics3'
23
23
  # slower to rackspace since this is running on aws
24
- timeout = @client.host.include?('rackspace') ? 40 : 10
24
+ timeout = @client.host.include?('rackspace') ? 40 : 12
25
25
  assert_performance timeout do
26
26
  100.times do
27
27
  @client.messages.post("hello world!")
@@ -74,7 +74,6 @@ class IronMQTests < TestBase
74
74
  assert res.nil?
75
75
 
76
76
 
77
-
78
77
  # new style of referencing queue
79
78
  queue = @client.queue("test_basics3")
80
79
  v = "hello big world"
@@ -269,7 +268,7 @@ class IronMQTests < TestBase
269
268
  assert msgr.nil?
270
269
 
271
270
  # let's release it in 10 seconds
272
- @client.messages.release(msg_id, :delay=>10)
271
+ @client.messages.release(msg_id, :delay => 10)
273
272
  msg = @client.messages.get
274
273
  p msg
275
274
  assert msg.nil?
@@ -293,6 +292,47 @@ class IronMQTests < TestBase
293
292
 
294
293
  end
295
294
 
295
+ def test_clear
296
+
297
+ q = @client.queue("clearer")
298
+
299
+ clear_queue(q.name)
300
+
301
+ val = "hi mr clean"
302
+ q.post(val)
303
+ assert q.size == 1
304
+
305
+ q.clear
306
+ msg = q.get
307
+ assert msg.nil?
308
+
309
+ q.reload
310
+
311
+ assert q.size == 0
312
+
313
+ end
314
+
315
+
316
+
317
+ def test_poll
318
+ queue = @client.queue("test_poll")
319
+ queue.clear
320
+
321
+ v = "hello world"
322
+ 5.times do
323
+ queue.post(v)
324
+ end
325
+
326
+ i = 0
327
+ queue.poll(:break_if_nil=>true) do |msg|
328
+ assert msg.body.include?("hello")
329
+ i += 1
330
+ end
331
+ assert i == 5
332
+
333
+ assert queue.reload.size == 0
334
+
335
+ end
296
336
 
297
337
 
298
338
  end
data/test/tmp.rb CHANGED
@@ -13,25 +13,4 @@ class IronMQTests < TestBase
13
13
 
14
14
  end
15
15
 
16
- def test_clear
17
-
18
- q = @client.queue("clearer")
19
-
20
- clear_queue(q.name)
21
-
22
- val = "hi mr clean"
23
- q.post(val)
24
- assert q.size == 1
25
-
26
- q.clear
27
- msg = q.get
28
- assert msg.nil?
29
-
30
- q.reload
31
-
32
- assert q.size == 0
33
-
34
-
35
- end
36
-
37
16
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iron_mq
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-31 00:00:00.000000000 Z
12
+ date: 2012-08-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: iron_core