qsagi 0.0.1 → 0.0.2

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/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ /vendor/bundle
data/Gemfile CHANGED
@@ -4,5 +4,6 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  group :test do
7
+ gem "rake", "~> 0.9.2.2"
7
8
  gem "rspec", "~> 2.11.0"
8
9
  end
@@ -3,16 +3,20 @@ module Qsagi
3
3
  attr_reader :payload
4
4
 
5
5
  def initialize(message, payload)
6
- @delivery_details = message[:delivery_details]
6
+ @message = message
7
7
  @payload = payload
8
8
  end
9
9
 
10
10
  def delivery_tag
11
- @delivery_details[:delivery_tag]
11
+ _delivery_details[:delivery_tag]
12
12
  end
13
13
 
14
14
  def exchange
15
- @delivery_details[:exchange]
15
+ _delivery_details[:exchange]
16
+ end
17
+
18
+ def _delivery_details
19
+ @delivery_details ||= @message.fetch(:delivery_details, {})
16
20
  end
17
21
  end
18
22
  end
@@ -23,6 +23,10 @@ module Qsagi
23
23
  @client.send(:close_socket) unless @client.nil?
24
24
  end
25
25
 
26
+ def length
27
+ @queue.status[:message_count]
28
+ end
29
+
26
30
  def pop(options = {})
27
31
  auto_ack = options.fetch(:auto_ack, true)
28
32
  message = @queue.pop(:ack => !auto_ack)
@@ -33,10 +37,8 @@ module Qsagi
33
37
  end
34
38
 
35
39
  def push(message)
36
- #exchange = @client.exchange(self.class._exchange)
37
40
  serialized_message = self.class._serializer.serialize(message)
38
- # @exchange.publish(serialized_message, :key => @queue.name, :persistent => true)
39
- @exchange.publish(serialized_message, :key => @queue.name, :persistent => true)
41
+ @exchange.publish(serialized_message, :key => @queue.name, :persistent => true, :mandatory => true)
40
42
  end
41
43
 
42
44
  def reconnect
@@ -1,3 +1,3 @@
1
1
  module Qsagi
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -9,6 +9,10 @@ describe Qsagi::Message do
9
9
  }
10
10
  Qsagi::Message.new(data, :parsed_payload).delivery_tag.should == "tag"
11
11
  end
12
+
13
+ it "gracefully handles no delivery details" do
14
+ Qsagi::Message.new({}, :parsed_payload).delivery_tag.should be_nil
15
+ end
12
16
  end
13
17
 
14
18
  describe "exchange" do
@@ -19,6 +23,10 @@ describe Qsagi::Message do
19
23
  }
20
24
  Qsagi::Message.new(data, :parsed_payload).exchange.should == "the_exchange"
21
25
  end
26
+
27
+ it "gracefully handles no delivery details" do
28
+ Qsagi::Message.new({}, :parsed_payload).exchange.should be_nil
29
+ end
22
30
  end
23
31
 
24
32
  describe "payload" do
@@ -41,6 +41,19 @@ describe Qsagi::Queue do
41
41
  end
42
42
  end
43
43
 
44
+ describe "length" do
45
+ it "returns the number of messages in the queue" do
46
+ ExampleQueue.connect do |queue|
47
+ queue.push("message")
48
+ queue.length.should == 1
49
+ queue.push("message")
50
+ queue.length.should == 2
51
+ queue.pop
52
+ queue.length.should == 1
53
+ end
54
+ end
55
+ end
56
+
44
57
  describe "pop" do
45
58
  it "automatically acks if :auto_ack is not passed in" do
46
59
  ExampleQueue.connect do |queue|
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: qsagi
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Braintree
@@ -10,11 +10,10 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-10-08 00:00:00 Z
13
+ date: 2012-10-11 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bunny
17
- prerelease: false
18
17
  requirement: &id001 !ruby/object:Gem::Requirement
19
18
  none: false
20
19
  requirements:
@@ -22,10 +21,10 @@ dependencies:
22
21
  - !ruby/object:Gem::Version
23
22
  version: 0.8.0
24
23
  type: :runtime
24
+ prerelease: false
25
25
  version_requirements: *id001
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: json
28
- prerelease: false
29
28
  requirement: &id002 !ruby/object:Gem::Requirement
30
29
  none: false
31
30
  requirements:
@@ -33,6 +32,7 @@ dependencies:
33
32
  - !ruby/object:Gem::Version
34
33
  version: 1.7.0
35
34
  type: :runtime
35
+ prerelease: false
36
36
  version_requirements: *id002
37
37
  description: A friendly way to talk to RabbitMQ
38
38
  email:
@@ -73,12 +73,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - ">="
75
75
  - !ruby/object:Gem::Version
76
+ hash: 3593553663519129653
77
+ segments:
78
+ - 0
76
79
  version: "0"
77
80
  required_rubygems_version: !ruby/object:Gem::Requirement
78
81
  none: false
79
82
  requirements:
80
83
  - - ">="
81
84
  - !ruby/object:Gem::Version
85
+ hash: 3593553663519129653
86
+ segments:
87
+ - 0
82
88
  version: "0"
83
89
  requirements: []
84
90