amqp 1.0.0.pre2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +3 -0
- data/README.md +80 -72
- data/amqp.gemspec +5 -13
- data/docs/08Migration.textile +4 -0
- data/docs/AMQP091ModelExplained.textile +6 -1
- data/docs/Bindings.textile +4 -0
- data/docs/Clustering.textile +4 -0
- data/docs/ConnectingToTheBroker.textile +4 -0
- data/docs/ConnectionEncryptionWithTLS.textile +4 -0
- data/docs/DocumentationGuidesIndex.textile +4 -0
- data/docs/Durability.textile +4 -0
- data/docs/ErrorHandling.textile +4 -0
- data/docs/Exchanges.textile +4 -0
- data/docs/GettingStarted.textile +4 -0
- data/docs/PatternsAndUseCases.textile +4 -1
- data/docs/Queues.textile +4 -0
- data/docs/RabbitMQVersions.textile +4 -0
- data/docs/RunningTests.textile +4 -0
- data/docs/TestingWithEventedSpec.textile +4 -0
- data/docs/Troubleshooting.textile +4 -0
- data/docs/VendorSpecificExtensions.textile +4 -0
- data/examples/error_handling/automatic_recovery_of_channel_and_queues.rb +1 -1
- data/examples/error_handling/automatically_recovering_hello_world_consumer.rb +1 -1
- data/examples/error_handling/automatically_recovering_hello_world_consumer_that_uses_a_server_named_queue.rb +1 -1
- data/examples/error_handling/connection_level_exception.rb +1 -1
- data/examples/error_handling/connection_level_exception_with_objects.rb +1 -1
- data/examples/error_handling/connection_loss_handler.rb +4 -3
- data/examples/error_handling/hello_world_producer.rb +1 -1
- data/examples/error_handling/manual_connection_and_channel_recovery.rb +1 -1
- data/examples/extensions/rabbitmq/publisher_confirmations_with_transient_messages.rb +1 -1
- data/examples/extensions/rabbitmq/using_alternate_exchanges.rb +1 -1
- data/examples/guides/getting_started/01_hello_world.rb +1 -1
- data/examples/guides/getting_started/02_hello_world_dslified.rb +1 -1
- data/examples/hello_world.rb +1 -1
- data/examples/hello_world_with_an_empty_string.rb +1 -1
- data/examples/hello_world_with_eventmachine_in_a_separate_thread.rb +2 -2
- data/examples/hello_world_with_large_payload.rb +41 -41
- data/examples/patterns/request_reply/client.rb +1 -2
- data/examples/patterns/request_reply/server.rb +0 -1
- data/examples/publishing/returned_messages.rb +1 -1
- data/examples/queues/accessing_message_metadata.rb +1 -1
- data/examples/queues/cancel_default_consumer.rb +1 -1
- data/lib/amqp/channel.rb +34 -16
- data/lib/amqp/client.rb +2 -2
- data/lib/amqp/connection.rb +2 -1
- data/lib/amqp/consumer.rb +2 -2
- data/lib/amqp/exceptions.rb +11 -2
- data/lib/amqp/exchange.rb +5 -5
- data/lib/amqp/queue.rb +51 -26
- data/lib/amqp/session.rb +5 -5
- data/lib/amqp/version.rb +1 -1
- data/spec/integration/basic_get_spec.rb +82 -27
- data/spec/integration/basic_return_spec.rb +3 -3
- data/spec/integration/channel_level_exception_with_multiple_channels_spec.rb +0 -1
- data/spec/integration/exchange_declaration_spec.rb +71 -102
- data/spec/integration/extensions/rabbitmq/publisher_confirmations_spec.rb +1 -1
- data/spec/integration/fanout_exchange_routing_spec.rb +1 -1
- data/spec/integration/multiple_consumers_per_queue_spec.rb +3 -160
- data/spec/integration/queue_redeclaration_with_incompatible_attributes_spec.rb +25 -12
- data/spec/integration/regressions/concurrent_publishing_on_the_same_channel_spec.rb +1 -1
- data/spec/integration/remove_individual_binding_spec.rb +51 -0
- data/spec/integration/reply_queue_communication_spec.rb +1 -2
- data/spec/integration/store_and_forward_spec.rb +6 -9
- data/spec/integration/topic_subscription_spec.rb +5 -4
- data/spec/spec_helper.rb +8 -2
- data/spec/unit/amqp/connection_spec.rb +3 -1
- metadata +93 -109
- data/spec/integration/immediate_messages_spec.rb +0 -59
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
describe AMQP do
|
5
|
+
describe "AMQP queue redeclaration with different attributes" do
|
6
6
|
|
7
7
|
#
|
8
8
|
# Environment
|
@@ -17,7 +17,7 @@ describe AMQP do
|
|
17
17
|
# Examples
|
18
18
|
#
|
19
19
|
|
20
|
-
context "when
|
20
|
+
context "when :durable value is different" do
|
21
21
|
let(:name) { "amqp-gem.nondurable.queue" }
|
22
22
|
let(:options) {
|
23
23
|
{ :durable => false, :exclusive => true, :auto_delete => true, :arguments => {}, :passive => false }
|
@@ -25,35 +25,48 @@ describe AMQP do
|
|
25
25
|
let(:different_options) {
|
26
26
|
{ :durable => true, :exclusive => true, :auto_delete => true, :arguments => {}, :passive => false}
|
27
27
|
}
|
28
|
-
let(:irrelevant_different_options) {
|
29
|
-
{ :durable => false, :exclusive => true, :auto_delete => true, :arguments => {}, :passive => false, :header => {:random => 'stuff' } }
|
30
|
-
}
|
31
28
|
|
32
29
|
|
33
30
|
it "should raise AMQP::IncompatibleOptionsError for incompatable options" do
|
34
31
|
channel = AMQP::Channel.new
|
35
|
-
channel.on_error do |ch,
|
36
|
-
@
|
32
|
+
channel.on_error do |ch, channel_close|
|
33
|
+
@error_code = channel_close.reply_code
|
37
34
|
end
|
38
35
|
|
39
36
|
channel.queue(name, options)
|
40
37
|
expect {
|
41
38
|
channel.queue(name, different_options)
|
42
39
|
}.to raise_error(AMQP::IncompatibleOptionsError)
|
43
|
-
|
40
|
+
|
41
|
+
done(0.5) {
|
42
|
+
@error_code.should == 406
|
43
|
+
}
|
44
44
|
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context "when :headers are different" do
|
48
|
+
let(:name) { "amqp-gem.nondurable.queue" }
|
49
|
+
let(:options) {
|
50
|
+
{ :durable => false, :exclusive => true, :auto_delete => true, :arguments => {}, :passive => false }
|
51
|
+
}
|
52
|
+
let(:different_options) {
|
53
|
+
{ :durable => false, :exclusive => true, :auto_delete => true, :arguments => {}, :passive => false, :header => {:random => 'stuff' } }
|
54
|
+
}
|
45
55
|
|
46
56
|
it "should not raise AMQP::IncompatibleOptionsError for irrelevant options" do
|
47
57
|
channel = AMQP::Channel.new
|
48
|
-
channel.on_error do |ch,
|
49
|
-
@
|
58
|
+
channel.on_error do |ch, channel_close|
|
59
|
+
@error_code = channel_close.reply_code
|
50
60
|
end
|
51
61
|
|
52
62
|
channel.queue(name, options)
|
53
63
|
expect {
|
54
|
-
channel.queue(name,
|
64
|
+
channel.queue(name, different_options)
|
55
65
|
}.to_not raise_error(AMQP::IncompatibleOptionsError)
|
56
|
-
|
66
|
+
|
67
|
+
done(0.5) {
|
68
|
+
@error_code.should == 406
|
69
|
+
}
|
57
70
|
end
|
58
71
|
end
|
59
72
|
end # describe AMQP
|
@@ -73,7 +73,7 @@ if mri?
|
|
73
73
|
20.times do
|
74
74
|
Thread.new do
|
75
75
|
messages.each do |message|
|
76
|
-
exchange.publish(message, :routing_key => queue.name, :
|
76
|
+
exchange.publish(message, :routing_key => queue.name, :mandatory => true)
|
77
77
|
end
|
78
78
|
end
|
79
79
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe "An individual binding" do
|
6
|
+
|
7
|
+
#
|
8
|
+
# Environment
|
9
|
+
#
|
10
|
+
|
11
|
+
include EventedSpec::AMQPSpec
|
12
|
+
|
13
|
+
default_timeout 3
|
14
|
+
|
15
|
+
amqp_before do
|
16
|
+
@channel = AMQP::Channel.new
|
17
|
+
@channel.should be_open
|
18
|
+
@channel.on_error do |ch, close|
|
19
|
+
raise "Channel-level error!: #{close.inspect}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
default_options AMQP_OPTS
|
25
|
+
|
26
|
+
|
27
|
+
it "can be deleted by specifying routing key" do
|
28
|
+
flag1 = false
|
29
|
+
flag2 = false
|
30
|
+
|
31
|
+
x = @channel.direct("amqpgem.examples.imaging")
|
32
|
+
|
33
|
+
q = @channel.queue("", :exclusive => true)
|
34
|
+
q.bind(x, :routing_key => "resize").bind(x, :routing_key => "watermark").subscribe do |meta, payload|
|
35
|
+
flag1 = (meta.routing_key == "watermark")
|
36
|
+
flag2 = (meta.routing_key == "resize")
|
37
|
+
end
|
38
|
+
|
39
|
+
EventMachine.add_timer(0.5) do
|
40
|
+
q.unbind(x, :routing_key => "resize") do
|
41
|
+
x.publish("some data", :routing_key => "resize")
|
42
|
+
x.publish("some data", :routing_key => "watermark")
|
43
|
+
end
|
44
|
+
|
45
|
+
done(1.0) {
|
46
|
+
flag1.should be_true
|
47
|
+
flag2.should be_false
|
48
|
+
}
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -53,19 +53,16 @@ describe "Store-and-forward routing" do
|
|
53
53
|
@queue.subscribe(:ack => false) do |payload|
|
54
54
|
payload.should_not be_nil
|
55
55
|
number_of_received_messages += 1
|
56
|
-
|
57
|
-
payload.force_encoding("UTF-8").should == dispatched_data
|
58
|
-
else
|
59
|
-
payload.should == dispatched_data
|
60
|
-
end
|
56
|
+
payload.should == dispatched_data
|
61
57
|
end # subscribe
|
62
58
|
|
63
|
-
|
64
|
-
|
59
|
+
delayed(0.3) do
|
60
|
+
expected_number_of_messages.times do
|
61
|
+
@exchange.publish(dispatched_data, :routing_key => @queue_name)
|
62
|
+
end
|
65
63
|
end
|
66
64
|
|
67
|
-
|
68
|
-
done(6.0) {
|
65
|
+
done(4.0) {
|
69
66
|
number_of_received_messages.should == expected_number_of_messages
|
70
67
|
@queue.unsubscribe
|
71
68
|
}
|
@@ -66,9 +66,9 @@ describe "Topic-based subscription" do
|
|
66
66
|
# publish some messages none of our queues should be receiving
|
67
67
|
3.times do
|
68
68
|
@exchange.publish(626 + rand(1000)/400.0, :key => "nasdaq.goog")
|
69
|
-
end
|
69
|
+
end
|
70
70
|
|
71
|
-
done(0.
|
71
|
+
done(0.5) {
|
72
72
|
received_messages.should == expected_messages
|
73
73
|
@aapl_queue.unsubscribe
|
74
74
|
@amzn_queue.unsubscribe
|
@@ -117,7 +117,7 @@ describe "Topic-based subscription" do
|
|
117
117
|
@exchange.publish("Blatche, Wall lead Wizards over Jazz 108-101", :key => "sports.nba.jazz")
|
118
118
|
@exchange.publish("Deron Williams Receives NBA Cares Community Assist Award", :key => "sports.nba.jazz")
|
119
119
|
|
120
|
-
done(0.
|
120
|
+
done(0.6) {
|
121
121
|
received_messages.should == expected_messages
|
122
122
|
|
123
123
|
@nba_queue.unsubscribe
|
@@ -151,6 +151,7 @@ describe "Topic-based subscription" do
|
|
151
151
|
@celtics_queue.name => 3
|
152
152
|
}
|
153
153
|
|
154
|
+
|
154
155
|
@sports_queue.bind(@exchange, :key => "sports.#").subscribe do |payload|
|
155
156
|
received_messages[@sports_queue.name] += 1
|
156
157
|
end
|
@@ -180,7 +181,7 @@ describe "Topic-based subscription" do
|
|
180
181
|
@exchange.publish("Philadelphia's Daniel Briere has been named as an All-Star replacement for Jarome Iginla.", :key => "sports.nhl.allstargame")
|
181
182
|
@exchange.publish("Devils blank Sid- and Malkin-less Penguins 2-0", :key => "sports.nhl.penguins")
|
182
183
|
|
183
|
-
done(0.
|
184
|
+
done(0.5) {
|
184
185
|
received_messages.should == expected_messages
|
185
186
|
|
186
187
|
@sports_queue.unsubscribe
|
data/spec/spec_helper.rb
CHANGED
@@ -15,6 +15,12 @@ puts "Using Ruby #{RUBY_VERSION}, amq-client #{AMQ::Client::VERSION} and amq-pro
|
|
15
15
|
|
16
16
|
amqp_config = File.dirname(__FILE__) + '/amqp.yml'
|
17
17
|
|
18
|
+
port = if ENV["TRACER"]
|
19
|
+
5673
|
20
|
+
else
|
21
|
+
5672
|
22
|
+
end
|
23
|
+
|
18
24
|
if File.exists? amqp_config
|
19
25
|
class Hash
|
20
26
|
def symbolize_keys
|
@@ -28,7 +34,7 @@ if File.exists? amqp_config
|
|
28
34
|
end
|
29
35
|
AMQP_OPTS = YAML::load_file(amqp_config).symbolize_keys[:test]
|
30
36
|
else
|
31
|
-
AMQP_OPTS = {:host => 'localhost', :port =>
|
37
|
+
AMQP_OPTS = {:host => 'localhost', :port => port}
|
32
38
|
end
|
33
39
|
|
34
40
|
# puts "AMQP_OPTS = #{AMQP_OPTS.inspect}"
|
@@ -82,4 +88,4 @@ module PlatformDetection
|
|
82
88
|
def rubinius?
|
83
89
|
defined?(RUBY_ENGINE) && (RUBY_ENGINE == 'rbx')
|
84
90
|
end
|
85
|
-
end
|
91
|
+
end
|
metadata
CHANGED
@@ -1,109 +1,101 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: amqp
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 0
|
10
|
-
- pre
|
11
|
-
- 2
|
12
|
-
version: 1.0.0.pre2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
13
6
|
platform: ruby
|
14
|
-
authors:
|
7
|
+
authors:
|
15
8
|
- Aman Gupta
|
16
9
|
- Jakub Stastny aka botanicus
|
17
10
|
- Michael S. Klishin
|
18
|
-
autorequire:
|
11
|
+
autorequire:
|
19
12
|
bindir: bin
|
20
13
|
cert_chain: []
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
date: 2013-03-24 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
25
17
|
name: eventmachine
|
26
|
-
|
27
|
-
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: !binary |-
|
23
|
+
MA==
|
28
24
|
none: false
|
29
|
-
|
25
|
+
requirement: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
30
27
|
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: !binary |-
|
30
|
+
MA==
|
31
|
+
none: false
|
32
|
+
prerelease: false
|
36
33
|
type: :runtime
|
37
|
-
|
38
|
-
- !ruby/object:Gem::Dependency
|
34
|
+
- !ruby/object:Gem::Dependency
|
39
35
|
name: amq-client
|
40
|
-
|
41
|
-
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.0.0
|
42
41
|
none: false
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
- 0
|
51
|
-
- pre
|
52
|
-
- 2
|
53
|
-
version: 1.0.0.pre2
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 1.0.0
|
47
|
+
none: false
|
48
|
+
prerelease: false
|
54
49
|
type: :runtime
|
55
|
-
|
56
|
-
- !ruby/object:Gem::Dependency
|
50
|
+
- !ruby/object:Gem::Dependency
|
57
51
|
name: amq-protocol
|
58
|
-
|
59
|
-
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - "~>"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 1.2.0
|
57
|
+
none: false
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.2.0
|
60
63
|
none: false
|
61
|
-
|
62
|
-
- - ~>
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
hash: -1633158752
|
65
|
-
segments:
|
66
|
-
- 1
|
67
|
-
- 0
|
68
|
-
- 0
|
69
|
-
- pre
|
70
|
-
- 6
|
71
|
-
version: 1.0.0.pre6
|
64
|
+
prerelease: false
|
72
65
|
type: :runtime
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
-
|
66
|
+
description: Widely used, feature-rich asynchronous AMQP RabbitMQ client with batteries included.
|
67
|
+
email:
|
68
|
+
- !binary |-
|
69
|
+
bWljaGFlbEBub3ZlbWJlcmFpbi5jb20=
|
70
|
+
- !binary |-
|
71
|
+
c3Rhc3RueUAxMDFpZGVhcy5jeg==
|
78
72
|
executables: []
|
79
|
-
|
80
73
|
extensions: []
|
81
|
-
|
82
|
-
extra_rdoc_files:
|
74
|
+
extra_rdoc_files:
|
83
75
|
- README.md
|
76
|
+
- docs/08Migration.textile
|
77
|
+
- docs/AMQP091ModelExplained.textile
|
78
|
+
- docs/Bindings.textile
|
79
|
+
- docs/Clustering.textile
|
80
|
+
- docs/ConnectingToTheBroker.textile
|
81
|
+
- docs/ConnectionEncryptionWithTLS.textile
|
82
|
+
- docs/DocumentationGuidesIndex.textile
|
84
83
|
- docs/Durability.textile
|
84
|
+
- docs/ErrorHandling.textile
|
85
85
|
- docs/Exchanges.textile
|
86
|
+
- docs/GettingStarted.textile
|
86
87
|
- docs/PatternsAndUseCases.textile
|
87
|
-
- docs/
|
88
|
-
- docs/
|
88
|
+
- docs/Queues.textile
|
89
|
+
- docs/RabbitMQVersions.textile
|
89
90
|
- docs/RunningTests.textile
|
90
|
-
- docs/
|
91
|
+
- docs/TestingWithEventedSpec.textile
|
91
92
|
- docs/Troubleshooting.textile
|
92
|
-
- docs/RabbitMQVersions.textile
|
93
|
-
- docs/Queues.textile
|
94
|
-
- docs/08Migration.textile
|
95
93
|
- docs/VendorSpecificExtensions.textile
|
96
|
-
|
97
|
-
-
|
98
|
-
-
|
99
|
-
-
|
100
|
-
-
|
101
|
-
- docs/TestingWithEventedSpec.textile
|
102
|
-
files:
|
103
|
-
- .gitignore
|
104
|
-
- .rspec
|
105
|
-
- .travis.yml
|
106
|
-
- .yardopts
|
94
|
+
files:
|
95
|
+
- ".gitignore"
|
96
|
+
- ".rspec"
|
97
|
+
- ".travis.yml"
|
98
|
+
- ".yardopts"
|
107
99
|
- CHANGELOG
|
108
100
|
- Gemfile
|
109
101
|
- README.md
|
@@ -291,7 +283,6 @@ files:
|
|
291
283
|
- spec/integration/fanout_exchange_routing_spec.rb
|
292
284
|
- spec/integration/headers_exchange_routing_spec.rb
|
293
285
|
- spec/integration/hello_world_spec.rb
|
294
|
-
- spec/integration/immediate_messages_spec.rb
|
295
286
|
- spec/integration/mandatory_messages_spec.rb
|
296
287
|
- spec/integration/message_acknowledgement_spec.rb
|
297
288
|
- spec/integration/message_metadata_access_spec.rb
|
@@ -307,6 +298,7 @@ files:
|
|
307
298
|
- spec/integration/regressions/concurrent_publishing_on_the_same_channel_spec.rb
|
308
299
|
- spec/integration/regressions/empty_message_body_spec.rb
|
309
300
|
- spec/integration/regressions/issue66_spec.rb
|
301
|
+
- spec/integration/remove_individual_binding_spec.rb
|
310
302
|
- spec/integration/reply_queue_communication_spec.rb
|
311
303
|
- spec/integration/store_and_forward_spec.rb
|
312
304
|
- spec/integration/stress/publishing_of_messages_with_incrementing_sizes_spec.rb
|
@@ -319,41 +311,33 @@ files:
|
|
319
311
|
- spec/unit/amqp/client_spec.rb
|
320
312
|
- spec/unit/amqp/connection_spec.rb
|
321
313
|
- spec/unit/amqp/int_allocator_spec.rb
|
322
|
-
homepage: http://
|
323
|
-
licenses:
|
314
|
+
homepage: http://rubyamqp.info
|
315
|
+
licenses:
|
324
316
|
- Ruby
|
325
|
-
post_install_message:
|
326
|
-
rdoc_options:
|
327
|
-
- --include=examples --main README.md
|
328
|
-
require_paths:
|
317
|
+
post_install_message:
|
318
|
+
rdoc_options:
|
319
|
+
- "--include=examples --main README.md"
|
320
|
+
require_paths:
|
329
321
|
- lib
|
330
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
322
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
323
|
+
requirements:
|
324
|
+
- - ">="
|
325
|
+
- !ruby/object:Gem::Version
|
326
|
+
version: !binary |-
|
327
|
+
MA==
|
331
328
|
none: false
|
332
|
-
|
329
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
330
|
+
requirements:
|
333
331
|
- - ">="
|
334
|
-
- !ruby/object:Gem::Version
|
335
|
-
|
336
|
-
|
337
|
-
- 0
|
338
|
-
version: "0"
|
339
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
332
|
+
- !ruby/object:Gem::Version
|
333
|
+
version: !binary |-
|
334
|
+
MA==
|
340
335
|
none: false
|
341
|
-
requirements:
|
342
|
-
- - ">"
|
343
|
-
- !ruby/object:Gem::Version
|
344
|
-
hash: 25
|
345
|
-
segments:
|
346
|
-
- 1
|
347
|
-
- 3
|
348
|
-
- 1
|
349
|
-
version: 1.3.1
|
350
336
|
requirements: []
|
351
|
-
|
352
337
|
rubyforge_project: amqp
|
353
338
|
rubygems_version: 1.8.24
|
354
|
-
signing_key:
|
339
|
+
signing_key:
|
355
340
|
specification_version: 3
|
356
|
-
summary: Widely used, feature-rich asynchronous
|
341
|
+
summary: Widely used, feature-rich asynchronous RabbitMQ client with batteries included
|
357
342
|
test_files: []
|
358
|
-
|
359
|
-
has_rdoc:
|
343
|
+
has_rdoc:
|