amq-client 0.7.0.alpha13 → 0.7.0.alpha14

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -4,4 +4,7 @@ rvm:
4
4
  - 1.9.2
5
5
  - ree
6
6
  - rbx
7
- - jruby
7
+ - jruby
8
+ gemfile:
9
+ - Gemfile
10
+ - gemfiles/eventmachine-pre
data/amq-client.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.has_rdoc = true
17
17
 
18
18
  # files
19
- s.files = `git ls-files`.split("\n").reject { |file| file =~ /^vendor\// }
19
+ s.files = `git ls-files`.split("\n").reject { |file| file =~ /^vendor\// || file =~ /^gemfiles\// }
20
20
  s.require_paths = ["lib"]
21
21
  s.extra_rdoc_files = ["README.textile"] + Dir.glob("doc/*")
22
22
 
@@ -11,7 +11,7 @@ EM.run do
11
11
  :password => "a password that is incorrect #{Time.now.to_i}", :on_possible_authentication_failure => Proc.new { |settings|
12
12
  puts "Authentication failed, as expected, settings are: #{settings.inspect}"
13
13
 
14
- EM.stop
14
+ EventMachine.stop
15
15
  }) do |client|
16
16
  raise "Should not really be executed"
17
17
  end
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ __dir = File.join(File.dirname(File.expand_path(__FILE__)), "..")
5
+ require File.join(__dir, "example_helper")
6
+
7
+ begin
8
+ EventMachine.run do
9
+ AMQ::Client::EventMachineClient.connect(:port => 5672,
10
+ :vhost => "/amq_client_testbed",
11
+ :user => "amq_client_gem",
12
+ :password => "a password that is incorrect #{Time.now.to_i}") do |client|
13
+ raise "Should not really be executed"
14
+ end
15
+ end
16
+ rescue AMQ::Client::PossibleAuthenticationFailureError => afe
17
+ puts "Authentication failed, as expected. Caught #{afe.inspect}"
18
+ EventMachine.stop if EventMachine.reactor_running?
19
+ end
@@ -109,7 +109,7 @@ module AMQ
109
109
  # the block if it is given.
110
110
  #
111
111
  # @example Specifying adapter via the :adapter option
112
- # AMQ::Client::Adapter.connect(adapter: "socket")
112
+ # AMQ::Client::Adapter.connect(:adapter => "socket")
113
113
  # @example Specifying using custom adapter class
114
114
  # AMQ::Client::SocketClient.connect
115
115
  # @param [Hash] Connection parameters, including :adapter to use.
@@ -155,6 +155,14 @@ module AMQ
155
155
  def tcp_connection_failure_exception_class
156
156
  @tcp_connection_failure_exception_class ||= AMQ::Client::TCPConnectionFailed
157
157
  end # tcp_connection_failure_exception_class
158
+
159
+ # Can be overriden by higher-level libraries like amqp gem or bunny.
160
+ # Defaults to AMQ::Client::PossibleAuthenticationFailure.
161
+ #
162
+ # @return [Class]
163
+ def authentication_failure_exception_class
164
+ @authentication_failure_exception_class ||= AMQ::Client::PossibleAuthenticationFailureError
165
+ end # authentication_failure_exception_class
158
166
  end # ClassMethods
159
167
 
160
168
 
@@ -203,7 +211,6 @@ module AMQ
203
211
  # section 2.2.4 of the {http://bit.ly/hw2ELX AMQP 0.9.1 specification}.
204
212
  #
205
213
  # @api plugin
206
- # @todo This method should await broker's response with Close-Ok. {http://github.com/michaelklishin MK}.
207
214
  # @see #close_connection
208
215
  def disconnect(reply_code = 200, reply_text = "Goodbye", &block)
209
216
  @intentionally_closing_connection = true
@@ -8,32 +8,57 @@ require "amq/client/framing/string/frame"
8
8
 
9
9
  module AMQ
10
10
  module Client
11
+ #
12
+ # CoolioClient is a drop-in replacement for EventMachineClient, if you prefer
13
+ # cool.io style.
14
+ #
11
15
  class CoolioClient
16
+ #
17
+ # Cool.io socket delegates most of its operations to the parent adapter.
18
+ # Thus, 99.9% of the time you don't need to deal with this class.
19
+ #
20
+ # @api private
21
+ # @private
12
22
  class Socket < ::Coolio::TCPSocket
13
23
  attr_accessor :adapter
14
24
 
25
+ # Connects to given host/port and sets parent adapter.
26
+ #
27
+ # @param [CoolioClient]
28
+ # @param [String]
29
+ # @param [Fixnum]
15
30
  def self.connect(adapter, host, port)
16
31
  socket = super(host, port)
17
32
  socket.adapter = adapter
18
33
  socket
19
34
  end
20
35
 
36
+ # Triggers socket_connect callback
21
37
  def on_connect
22
38
  #puts "On connect"
23
- adapter.on_socket_connect
39
+ adapter.socket_connected
24
40
  end
25
41
 
42
+ # Triggers on_read callback
26
43
  def on_read(data)
27
44
  # puts "Received data"
28
45
  # puts_data(data)
29
- adapter.on_read(data)
46
+ adapter.receive_data(data)
30
47
  end
31
48
 
32
- # This handler should never trigger in normal circumstances
49
+ # Triggers socket_disconnect callback
33
50
  def on_close
34
- adapter.on_socket_disconnect
51
+ adapter.socket_disconnected
52
+ end
53
+
54
+ # Triggers tcp_connection_failed callback
55
+ def on_connect_failed
56
+ adapter.tcp_connection_failed
35
57
  end
36
58
 
59
+ # Sends raw data through the socket
60
+ #
61
+ # param [String] Binary data
37
62
  def send_raw(data)
38
63
  # puts "Sending data"
39
64
  # puts_data(data)
@@ -41,6 +66,7 @@ module AMQ
41
66
  end
42
67
 
43
68
  protected
69
+ # Debugging routine
44
70
  def puts_data(data)
45
71
  puts " As string: #{data.inspect}"
46
72
  puts " As byte array: #{data.bytes.to_a.inspect}"
@@ -60,98 +86,182 @@ module AMQ
60
86
  # API
61
87
  #
62
88
 
89
+ # Cool.io socket for multiplexing et al.
90
+ #
91
+ # @private
63
92
  attr_accessor :socket
93
+
94
+ # Hash with available callbacks
64
95
  attr_accessor :callbacks
96
+
97
+ # AMQP connections
98
+ #
99
+ # @see AMQ::Client::Connection
65
100
  attr_accessor :connections
66
101
 
102
+ # Creates a socket and attaches it to cool.io default loop.
103
+ #
104
+ # Called from CoolioClient.connect
105
+ #
106
+ # @see AMQ::Client::Adapter::ClassMethods#connect
107
+ # @param [Hash] connection settings
108
+ # @api private
67
109
  def establish_connection(settings)
68
110
  socket = Socket.connect(self, settings[:host], settings[:port])
69
111
  socket.attach(Cool.io::Loop.default)
70
112
  self.socket = socket
71
113
  end
72
114
 
115
+ # Registers on_connection callback
116
+ # @see #on_connection
117
+ # @api private
73
118
  def register_connection_callback(&block)
74
119
  self.on_connection(&block)
75
120
  end
76
121
 
122
+ # Performs basic initialization. Do not use this method directly, use
123
+ # CoolioClient.connect instead
124
+ #
125
+ # @see AMQ::Client::Adapter::ClassMethods#connect
126
+ # @api private
77
127
  def initialize
78
128
  # Be careful with default values for #ruby hashes: h = Hash.new(Array.new); h[:key] ||= 1
79
129
  # won't assign anything to :key. MK.
80
130
  @callbacks = {}
81
131
  @connections = []
82
132
  super
133
+ if settings[:on_tcp_connection_failure]
134
+ on_tcp_connection_failure(&settings.delete(:on_tcp_connection_failure))
135
+ end
83
136
  end
84
137
 
85
- # sets a callback for connection
138
+ # Sets a callback for successful connection (after we receive open-ok)
139
+ #
140
+ # @api public
86
141
  def on_connection(&block)
87
142
  define_callback :connect, &block
88
143
  end
89
144
 
90
- # sets a callback for disconnection
145
+ # Sets a callback for disconnection (as in client-side disconnection)
146
+ #
147
+ # @api public
91
148
  def on_disconnection(&block)
92
149
  define_callback :disconnect, &block
93
150
  end
94
151
 
152
+ # Sets a callback for tcp connection failure (as in can't make initial connection)
153
+ def on_tcp_connection_failure(&block)
154
+ define_callback :tcp_connection_failure, &block
155
+ end
156
+
157
+ # Sets a callback for successful connection (after we receive tune-ok)
158
+ #
159
+ # @api public
95
160
  def on_open(&block)
96
161
  define_callback :open, &block
97
162
  end # on_open(&block)
98
163
 
99
164
 
100
- # called by AMQ::Client::Connection after we receive connection.open-ok.
165
+ # Called by AMQ::Client::Connection after we receive connection.open-ok.
166
+ #
167
+ # @api private
101
168
  def connection_successful
102
169
  exec_callback_yielding_self(:connect)
103
170
  end
104
171
 
105
- # called by AMQ::Client::Connection after we receive connection.close-ok.
172
+ # Called by AMQ::Client::Connection after we receive connection.close-ok.
173
+ #
174
+ # @api private
106
175
  def disconnection_successful
107
176
  exec_callback_yielding_self(:disconnect)
108
177
  close_connection
178
+ closed!
109
179
  end
110
180
 
181
+ # Called by AMQ::Client::Connection after we receive connection.tune.
182
+ #
183
+ # @api private
111
184
  def open_successful
112
185
  @authenticating = false
186
+ opened!
113
187
  exec_callback_yielding_self(:open)
114
188
  end # open_successful
115
189
 
190
+ # Called by Socket if it could not connect.
191
+ #
192
+ # @api private
193
+ def tcp_connection_failed
194
+ if has_callback?(:tcp_connection_failure)
195
+ exec_callback_yielding_self(:tcp_connection_failure)
196
+ else
197
+ raise self.class.tcp_connection_failure_exception_class.new(settings)
198
+ end
199
+ end # tcp_connection_failed
116
200
 
117
- # triggered when socket is connected but before handshake is done
118
- def on_socket_connect
201
+ # Called when socket is connected but before handshake is done
202
+ #
203
+ # @api private
204
+ def socket_connected
119
205
  post_init
120
206
  end
121
207
 
122
- # triggered after socket is closed
123
- def on_socket_disconnect
208
+ # Called after socket is closed
209
+ #
210
+ # @api private
211
+ def socket_disconnected
124
212
  end
125
213
 
214
+ # Sends raw data through the socket
215
+ #
216
+ # @param [String] binary data
217
+ # @api private
126
218
  def send_raw(data)
127
219
  socket.send_raw data
128
220
  end
129
221
 
130
222
  # The story about the buffering is kinda similar to EventMachine,
131
223
  # you keep receiving more than one frame in a single packet.
132
- def on_read(chunk)
224
+ #
225
+ # @param [String] chunk with binary data received. It could be one frame,
226
+ # more than one frame or less than one frame.
227
+ # @api private
228
+ def receive_data(chunk)
133
229
  @chunk_buffer << chunk
134
230
  while frame = get_next_frame
135
231
  receive_frame(AMQ::Client::Framing::String::Frame.decode(frame))
136
232
  end
137
233
  end
138
234
 
235
+ # Closes the socket.
236
+ #
237
+ # @api private
139
238
  def close_connection
140
239
  @socket.close
141
240
  end
142
241
 
242
+ # Returns class used for tcp connection failures.
243
+ #
244
+ # @api private
245
+ def self.tcp_connection_failure_exception_class
246
+ AMQ::Client::TCPConnectionFailed
247
+ end # self.tcp_connection_failure_exception_class
143
248
 
144
249
  protected
145
250
 
251
+ # @api private
146
252
  def post_init
147
253
  reset
148
254
  handshake
149
255
  end
150
256
 
257
+ # @api private
151
258
  def reset
152
259
  @chunk_buffer = ""
153
260
  end
154
261
 
262
+ # Returns next frame from buffer whenever possible
263
+ #
264
+ # @api private
155
265
  def get_next_frame
156
266
  return nil unless @chunk_buffer.size > 7 # otherwise, cannot read the length
157
267
  # octet + short
@@ -137,10 +137,13 @@ module AMQ
137
137
  # EventMachine::Connection's and Adapter's constructors arity
138
138
  # make it easier to use *args. MK.
139
139
  @settings = args.first
140
- @on_possible_authentication_failure = @settings[:on_possible_authentication_failure]
141
140
  @on_tcp_connection_failure = @settings[:on_tcp_connection_failure] || Proc.new { |settings|
142
141
  raise self.class.tcp_connection_failure_exception_class.new(settings)
143
142
  }
143
+ @on_possible_authentication_failure = @settings[:on_possible_authentication_failure] || Proc.new { |settings|
144
+ raise self.class.authentication_failure_exception_class.new(settings)
145
+ }
146
+
144
147
 
145
148
  self.reset
146
149
 
@@ -306,7 +309,7 @@ module AMQ
306
309
  end # disconnection_successful
307
310
 
308
311
 
309
- # Called when initial TCP connection fails.
312
+ # Called when previously established TCP connection fails.
310
313
  # @api public
311
314
  def tcp_connection_lost
312
315
  @on_tcp_connection_loss.call(self, @settings) if @on_tcp_connection_loss
@@ -68,6 +68,10 @@ module AMQ
68
68
  callbacks = Array(self.callbacks.delete(name))
69
69
  callbacks.map { |c| c.call(self, *args, &block) } if callbacks.any?
70
70
  end
71
+
72
+ def has_callback?(name)
73
+ self.callbacks[name] && !self.callbacks[name].empty?
74
+ end # has_callback?
71
75
  end
72
76
 
73
77
  # AMQ entities, as implemented by AMQ::Client, have callbacks and can run them
@@ -1,5 +1,5 @@
1
1
  module AMQ
2
2
  module Client
3
- VERSION = "0.7.0.alpha13"
3
+ VERSION = "0.7.0.alpha14"
4
4
  end
5
5
  end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+ require 'integration/coolio/spec_helper'
3
+
4
+ describe "AMQ::Client::CoolioClient", "Connection.Close", :nojruby => true do
5
+ include EventedSpec::SpecHelper
6
+ default_timeout 0.5
7
+
8
+ it "should issue a callback and close connection" do
9
+ coolio do
10
+ AMQ::Client::CoolioClient.connect do |client|
11
+ @client = client
12
+ client.should be_opened
13
+ client.close do
14
+ done
15
+ end
16
+ end
17
+ end
18
+ @client.should be_closed
19
+ end
20
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+ require 'integration/coolio/spec_helper'
3
+
4
+ #
5
+ # We assume that default connection settings (amqp://guest:guest@localhost:5672/) should work
6
+ #
7
+ describe "AMQ::Client::CoolioClient", "Connection.Start", :nojruby => true do
8
+ include EventedSpec::SpecHelper
9
+ default_timeout 0.5
10
+
11
+ context "with valid credentials" do
12
+ it "should trigger the callback" do
13
+ coolio do
14
+ AMQ::Client::CoolioClient.connect do |client|
15
+ client.should be_opened
16
+ done
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ context "with invalid credentials" do
23
+ context "when given an errback" do
24
+ it "should trigger the errback" do
25
+ coolio do
26
+ AMQ::Client::CoolioClient.connect(:port => 12938, :on_tcp_connection_failure => proc { done }) do |client|
27
+ raise "This callback should never happen"
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ context "when given no errback" do
34
+ it "should raise an error" do
35
+ expect {
36
+ coolio do
37
+ AMQ::Client::CoolioClient.connect(:port => 12938) { }
38
+ done(0.5)
39
+ end
40
+ }.to raise_error(AMQ::Client::TCPConnectionFailed)
41
+ end
42
+ end
43
+ end
44
+
45
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+ require 'integration/eventmachine/spec_helper'
3
+
4
+ describe AMQ::Client::EventMachineClient, "Connection.Close" do
5
+ include EventedSpec::SpecHelper
6
+ default_timeout 0.5
7
+
8
+ it "should issue a callback and close connection" do
9
+ em do
10
+ AMQ::Client::EventMachineClient.connect do |client|
11
+ @client = client
12
+ client.should be_opened
13
+ client.close do
14
+ done
15
+ end
16
+ end
17
+ end
18
+ @client.should be_closed
19
+ end
20
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+ require 'integration/eventmachine/spec_helper'
3
+
4
+ #
5
+ # We assume that default connection settings (amqp://guest:guest@localhost:5672/) should work
6
+ #
7
+ describe AMQ::Client::EventMachineClient, "Connection.Start" do
8
+ include EventedSpec::SpecHelper
9
+ default_timeout 0.5
10
+
11
+ context "with valid credentials" do
12
+ it "should trigger the callback" do
13
+ em do
14
+ AMQ::Client::EventMachineClient.connect do |client|
15
+ done
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ context "with invalid credentials" do
22
+ context "when given an errback" do
23
+ it "should trigger the errback" do
24
+ em do
25
+ AMQ::Client::EventMachineClient.connect(:port => 12938, :on_tcp_connection_failure => proc { done }) do |client|
26
+ raise "This callback should never happen"
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ context "when given no errback" do
33
+ it "should raise an error" do
34
+ expect {
35
+ em do
36
+ AMQ::Client::EventMachineClient.connect(:port => 12938) { }
37
+ done(0.5)
38
+ end
39
+ }.to raise_error(AMQ::Client::TCPConnectionFailed)
40
+ end
41
+ end
42
+ end
43
+
44
+ end
@@ -12,6 +12,17 @@ describe AMQ::Client::Entity do
12
12
  subject.callbacks.should be_kind_of(Hash)
13
13
  end
14
14
 
15
+ describe "#has_callback?" do
16
+ it "should return true if entity has at least one callback with given name" do
17
+ subject.define_callback(:init, proc {})
18
+ subject.has_callback?(:init).should be_true
19
+ end
20
+
21
+ it "should return false if entity doesn't have callbacks with given name" do
22
+ subject.has_callback?(:init).should be_false
23
+ end
24
+ end
25
+
15
26
  describe "#exec_callback" do
16
27
  it "executes callback for given event" do
17
28
  proc = Proc.new { |*args, &block|
metadata CHANGED
@@ -1,10 +1,16 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: amq-client
3
- version: !ruby/object:Gem::Version
4
- version: 0.7.0.alpha13
5
- prerelease: 6
3
+ version: !ruby/object:Gem::Version
4
+ hash: 1369027944
5
+ prerelease: true
6
+ segments:
7
+ - 0
8
+ - 7
9
+ - 0
10
+ - alpha14
11
+ version: 0.7.0.alpha14
6
12
  platform: ruby
7
- authors:
13
+ authors:
8
14
  - Jakub Stastny
9
15
  - Michael S. Klishin
10
16
  - Theo Hultberg
@@ -12,41 +18,46 @@ authors:
12
18
  autorequire:
13
19
  bindir: bin
14
20
  cert_chain:
15
- date: 2011-04-24 00:00:00.000000000 +04:00
21
+ date: 2011-04-30 00:00:00 +04:00
16
22
  default_executable:
17
- dependencies:
18
- - !ruby/object:Gem::Dependency
23
+ dependencies:
24
+ - !ruby/object:Gem::Dependency
19
25
  name: eventmachine
20
- requirement: &2165032900 !ruby/object:Gem::Requirement
26
+ prerelease: false
27
+ requirement: &id001 !ruby/object:Gem::Requirement
21
28
  none: false
22
- requirements:
23
- - - ! '>='
24
- - !ruby/object:Gem::Version
25
- version: '0'
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ hash: 3
33
+ segments:
34
+ - 0
35
+ version: "0"
26
36
  type: :runtime
27
- prerelease: false
28
- version_requirements: *2165032900
29
- - !ruby/object:Gem::Dependency
37
+ version_requirements: *id001
38
+ - !ruby/object:Gem::Dependency
30
39
  name: amq-protocol
31
- requirement: &2165032440 !ruby/object:Gem::Requirement
40
+ prerelease: false
41
+ requirement: &id002 !ruby/object:Gem::Requirement
32
42
  none: false
33
- requirements:
34
- - - ! '>='
35
- - !ruby/object:Gem::Version
36
- version: '0'
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ hash: 3
47
+ segments:
48
+ - 0
49
+ version: "0"
37
50
  type: :runtime
38
- prerelease: false
39
- version_requirements: *2165032440
40
- description: amq-client supports multiple networking adapters (EventMachine, TCP sockets,
41
- cool.io) and supposed to back more opinionated AMQP clients (such as amqp gem, bunny,
42
- et cetera) or be used directly in cases when access to more advanced AMQP 0.9.1
43
- features is more important that convenient APIs
44
- email:
51
+ version_requirements: *id002
52
+ description: amq-client supports multiple networking adapters (EventMachine, TCP sockets, cool.io) and supposed to back more opinionated AMQP clients (such as amqp gem, bunny, et cetera) or be used directly in cases when access to more advanced AMQP 0.9.1 features is more important that convenient APIs
53
+ email:
45
54
  - stastny@101ideas.cz
46
55
  - michael@novemberain.com
47
56
  executables: []
57
+
48
58
  extensions: []
49
- extra_rdoc_files:
59
+
60
+ extra_rdoc_files:
50
61
  - README.textile
51
62
  - doc/_index.html
52
63
  - doc/AMQ.html
@@ -57,7 +68,7 @@ extra_rdoc_files:
57
68
  - doc/index.html
58
69
  - doc/method_list.html
59
70
  - doc/top-level-namespace.html
60
- files:
71
+ files:
61
72
  - .gitignore
62
73
  - .gitmodules
63
74
  - .rspec
@@ -83,7 +94,8 @@ files:
83
94
  - examples/coolio_adapter/queue_unbind.rb
84
95
  - examples/eventmachine_adapter/authentication/plain_password_with_custom_role_credentials.rb
85
96
  - examples/eventmachine_adapter/authentication/plain_password_with_default_role_credentials.rb
86
- - examples/eventmachine_adapter/authentication/plain_password_with_incorrect_credentials.rb
97
+ - examples/eventmachine_adapter/authentication/plain_password_with_incorrect_credentials_handled_with_a_callback.rb
98
+ - examples/eventmachine_adapter/authentication/plain_password_with_incorrect_credentials_handled_with_a_rescue_block.rb
87
99
  - examples/eventmachine_adapter/basic_cancel.rb
88
100
  - examples/eventmachine_adapter/basic_consume.rb
89
101
  - examples/eventmachine_adapter/basic_consume_with_acknowledgements.rb
@@ -169,6 +181,8 @@ files:
169
181
  - spec/integration/coolio/basic_return_spec.rb
170
182
  - spec/integration/coolio/channel_close_spec.rb
171
183
  - spec/integration/coolio/channel_flow_spec.rb
184
+ - spec/integration/coolio/connection_close_spec.rb
185
+ - spec/integration/coolio/connection_start_spec.rb
172
186
  - spec/integration/coolio/spec_helper.rb
173
187
  - spec/integration/coolio/tx_commit_spec.rb
174
188
  - spec/integration/coolio/tx_rollback_spec.rb
@@ -177,6 +191,8 @@ files:
177
191
  - spec/integration/eventmachine/basic_return_spec.rb
178
192
  - spec/integration/eventmachine/channel_close_spec.rb
179
193
  - spec/integration/eventmachine/channel_flow_spec.rb
194
+ - spec/integration/eventmachine/connection_close_spec.rb
195
+ - spec/integration/eventmachine/connection_start_spec.rb
180
196
  - spec/integration/eventmachine/spec_helper.rb
181
197
  - spec/integration/eventmachine/tx_commit_spec.rb
182
198
  - spec/integration/eventmachine/tx_rollback_spec.rb
@@ -201,26 +217,38 @@ files:
201
217
  has_rdoc: true
202
218
  homepage: http://github.com/ruby-amqp/amq-client
203
219
  licenses: []
220
+
204
221
  post_install_message:
205
222
  rdoc_options: []
206
- require_paths:
223
+
224
+ require_paths:
207
225
  - lib
208
- required_ruby_version: !ruby/object:Gem::Requirement
226
+ required_ruby_version: !ruby/object:Gem::Requirement
209
227
  none: false
210
- requirements:
211
- - - ! '>='
212
- - !ruby/object:Gem::Version
213
- version: '0'
214
- required_rubygems_version: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - ">="
230
+ - !ruby/object:Gem::Version
231
+ hash: 3
232
+ segments:
233
+ - 0
234
+ version: "0"
235
+ required_rubygems_version: !ruby/object:Gem::Requirement
215
236
  none: false
216
- requirements:
217
- - - ! '>'
218
- - !ruby/object:Gem::Version
237
+ requirements:
238
+ - - ">"
239
+ - !ruby/object:Gem::Version
240
+ hash: 25
241
+ segments:
242
+ - 1
243
+ - 3
244
+ - 1
219
245
  version: 1.3.1
220
246
  requirements: []
247
+
221
248
  rubyforge_project: amq-client
222
- rubygems_version: 1.6.2
249
+ rubygems_version: 1.3.7
223
250
  signing_key:
224
251
  specification_version: 3
225
252
  summary: amq-client is a fully-featured, low-level AMQP 0.9.1 client
226
253
  test_files: []
254
+