Hello community, here is the log from the commit of package rubygem-amqp for openSUSE:Factory checked in at 2018-02-12 10:13:20 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-amqp (Old) and /work/SRC/openSUSE:Factory/.rubygem-amqp.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-amqp" Mon Feb 12 10:13:20 2018 rev:21 rq:574041 version:1.8.0 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-amqp/rubygem-amqp.changes 2017-04-11 09:31:49.194174876 +0200 +++ /work/SRC/openSUSE:Factory/.rubygem-amqp.new/rubygem-amqp.changes 2018-02-12 10:13:20.533554497 +0100 @@ -1,0 +2,6 @@ +Tue Jan 9 07:22:04 UTC 2018 - [email protected] + +- updated to version 1.8.0 + see installed ChangeLog.md + +------------------------------------------------------------------- Old: ---- amqp-1.7.0.gem New: ---- amqp-1.8.0.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-amqp.spec ++++++ --- /var/tmp/diff_new_pack.txN8t5/_old 2018-02-12 10:13:21.357524804 +0100 +++ /var/tmp/diff_new_pack.txN8t5/_new 2018-02-12 10:13:21.357524804 +0100 @@ -1,7 +1,7 @@ # # spec file for package rubygem-amqp # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,7 +24,7 @@ # Name: rubygem-amqp -Version: 1.7.0 +Version: 1.8.0 Release: 0 %define mod_name amqp %define mod_full_name %{mod_name}-%{version} @@ -34,7 +34,7 @@ BuildRequires: %{ruby} BuildRequires: ruby-macros >= 5 Url: http://rubyamqp.info -Source: http://rubygems.org/gems/%{mod_full_name}.gem +Source: https://rubygems.org/gems/%{mod_full_name}.gem Source1: gem2rpm.yml Summary: Mature EventMachine-based RabbitMQ client License: BSD-2-Clause or Ruby ++++++ amqp-1.7.0.gem -> amqp-1.8.0.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 2017-02-02 12:32:45.000000000 +0100 +++ new/.gitignore 2018-01-02 13:18:19.000000000 +0100 @@ -17,3 +17,5 @@ bin/* .AppleDouble/* debug/* + +.ruby-version diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.ruby-version new/.ruby-version --- old/.ruby-version 2017-02-02 12:32:45.000000000 +0100 +++ new/.ruby-version 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -2.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.travis.yml new/.travis.yml --- old/.travis.yml 2017-02-02 12:32:45.000000000 +0100 +++ new/.travis.yml 2018-01-02 13:18:19.000000000 +0100 @@ -1,12 +1,12 @@ language: ruby bundler_args: --without development -before_script: ./bin/ci/before_build.sh +before_script: ./bin/ci/before_build script: "bundle exec rake spec:ci" env: - CI=true rvm: - 2.3.3 - - 2.4.0 + - 2.4.1 gemfile: - Gemfile - gemfiles/eventmachine-pre @@ -16,7 +16,7 @@ branches: only: - master - - 1.5.x-stable + - 1.7.x-stable matrix: allow_failures: - rvm: jruby diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ChangeLog.md new/ChangeLog.md --- old/ChangeLog.md 2017-02-02 12:32:45.000000000 +0100 +++ new/ChangeLog.md 2018-01-02 13:18:19.000000000 +0100 @@ -1,7 +1,18 @@ -## Changes Between 1.6.0 and 1.7.0 (unreleased) +## Changes Between 1.6.0 and 1.7.0 (Feb 2nd, 2017) -None to date. +### Clear Framesets on Exception +Unprocessed frames received on a connection are now correctly +cleared when an exception occurs. + +Contributed by Michael Lutsiuk. + +GitHub issue: [#218](https://github.com/ruby-amqp/amqp/issues/218) + + +### amq-protocol Update + +Minimum `amq-protocol` version is now `2.1.0`. ## Changes Between 1.5.0 and 1.6.0 (Apr 4th, 2016) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/README.md new/README.md --- old/README.md 2017-02-02 12:32:45.000000000 +0100 +++ new/README.md 2018-01-02 13:18:19.000000000 +0100 @@ -3,6 +3,9 @@ [Ruby amqp gem](http://rubyamqp.info) is a feature-rich, EventMachine-based RabbitMQ client with batteries included. +It's the original RabbitMQ client for Ruby. These days there are very +solid alternatives available: [Bunny](http://rubybunny.info) for MRI and [March Hare](http://rubymarchhare.info) for JRuby. + It implement [AMQP 0.9.1](http://www.rabbitmq.com/tutorials/amqp-concepts.html) and support [RabbitMQ extensions to AMQP @@ -134,8 +137,9 @@ ## Supported Ruby Versions -amqp gem `1.6.x` series supports +amqp gem `1.6.x` and `1.7.x` series support + * Ruby 2.4 * Ruby 2.3 * Ruby 2.2 * Ruby 2.1 @@ -236,7 +240,7 @@ * The Initial Developer of the Original Code is Aman Gupta. * Copyright (c) 2008 - 2010 [Aman Gupta](http://github.com/tmm1). * Contributions from [Jakub Stastny](http://github.com/botanicus) are Copyright (c) 2011-2012 VMware, Inc. -* Copyright (c) 2010 — 2016 [ruby-amqp](https://github.com/ruby-amqp) group members. +* Copyright (c) 2010 — 2017 [ruby-amqp](https://github.com/ruby-amqp) group members. Currently maintained by [ruby-amqp](https://github.com/ruby-amqp) group members Special thanks to Dmitriy Samovskiy, Ben Hood and Tony Garnock-Jones. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amqp.gemspec new/amqp.gemspec --- old/amqp.gemspec 2017-02-02 12:32:45.000000000 +0100 +++ new/amqp.gemspec 2018-01-02 13:18:19.000000000 +0100 @@ -23,7 +23,7 @@ # Dependencies s.add_dependency "eventmachine" - s.add_dependency "amq-protocol", ">= 2.1.0" + s.add_dependency "amq-protocol", ">= 2.2.0" s.rubyforge_project = "amqp" end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bin/ci/before_build new/bin/ci/before_build --- old/bin/ci/before_build 1970-01-01 01:00:00.000000000 +0100 +++ new/bin/ci/before_build 2018-01-02 13:18:19.000000000 +0100 @@ -0,0 +1,41 @@ +#!/usr/bin/env ruby + +$ctl = ENV["AMQP_GEM_RABBITMQCTL"] || ENV["RABBITMQCTL"] || "sudo rabbitmqctl" +$plugins = ENV["AMQP_GEM_RABBITMQ_PLUGINS"] || ENV["RABBITMQ_PLUGINS"] || "sudo rabbitmq-plugins" + +def rabbit_control(args) + command = "#{$ctl} #{args}" + system command +end + +def rabbit_plugins(args) + command = "#{$plugins} #{args}" + system command +end + +# guest:guest has full access to / + +rabbit_control 'add_vhost /' +rabbit_control 'add_user guest guest' +rabbit_control 'set_permissions -p / guest ".*" ".*" ".*"' + + +# amqp_gem:amqp_gem_password has full access to amqp_gem_testbed + +rabbit_control 'add_vhost amqp_gem_testbed' +rabbit_control 'add_user amqp_gem amqp_gem_password' +rabbit_control 'set_permissions -p amqp_gem_testbed amqp_gem ".*" ".*" ".*"' + + +# amqp_gem_reader:reader_password has read access to amqp_gem_testbed + +rabbit_control 'add_user amqp_gem_reader reader_password' +rabbit_control 'clear_permissions -p amqp_gem_testbed guest' +rabbit_control 'set_permissions -p amqp_gem_testbed amqp_gem_reader "^---$" "^---$" ".*"' + +# requires RabbitMQ 3.0+ +# $RABBITMQ_PLUGINS enable rabbitmq_consistent_hash_exchange + +# Reduce retention policy for faster publishing of stats +rabbit_control "eval 'supervisor2:terminate_child(rabbit_mgmt_sup_sup, rabbit_mgmt_sup), application:set_env(rabbitmq_management, sample_retention_policies, [{global, [{605, 1}]}, {basic, [{605, 1}]}, {detailed, [{10, 1}]}]), rabbit_mgmt_sup_sup:start_child().'" +rabbit_control "eval 'supervisor2:terminate_child(rabbit_mgmt_agent_sup_sup, rabbit_mgmt_agent_sup), application:set_env(rabbitmq_management_agent, sample_retention_policies, [{global, [{605, 1}]}, {basic, [{605, 1}]}, {detailed, [{10, 1}]}]), rabbit_mgmt_agent_sup_sup:start_child().'" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bin/ci/before_build.sh new/bin/ci/before_build.sh --- old/bin/ci/before_build.sh 2017-02-02 12:32:45.000000000 +0100 +++ new/bin/ci/before_build.sh 1970-01-01 01:00:00.000000000 +0100 @@ -1,27 +0,0 @@ -#!/bin/sh - -${RABBITMQCTL:="sudo rabbitmqctl"} -${RABBITMQ_PLUGINS:="sudo rabbitmq-plugins"} - -# guest:guest has full access to / - -$RABBITMQCTL add_vhost / -$RABBITMQCTL add_user guest guest -$RABBITMQCTL set_permissions -p / guest ".*" ".*" ".*" - - -# amqp_gem:amqp_gem_password has full access to amqp_gem_testbed - -$RABBITMQCTL add_vhost amqp_gem_testbed -$RABBITMQCTL add_user amqp_gem amqp_gem_password -$RABBITMQCTL set_permissions -p amqp_gem_testbed amqp_gem ".*" ".*" ".*" - - -# amqp_gem_reader:reader_password has read access to amqp_gem_testbed - -$RABBITMQCTL add_user amqp_gem_reader reader_password -$RABBITMQCTL clear_permissions -p amqp_gem_testbed guest -$RABBITMQCTL set_permissions -p amqp_gem_testbed amqp_gem_reader "^---$" "^---$" ".*" - -# requires RabbitMQ 3.0+ -# $RABBITMQ_PLUGINS enable rabbitmq_consistent_hash_exchange Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/amqp/channel.rb new/lib/amqp/channel.rb --- old/lib/amqp/channel.rb 2017-02-02 12:32:45.000000000 +0100 +++ new/lib/amqp/channel.rb 2018-01-02 13:18:19.000000000 +0100 @@ -7,7 +7,7 @@ module AMQP # h2. What are AMQP channels # - # To quote {http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification}: + # To quote {https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification}: # # AMQP is a multi-channelled protocol. Channels provide a way to multiplex # a heavyweight TCP/IP connection into several light weight connections. @@ -140,7 +140,7 @@ # AMQP gem supports several RabbitMQ extensions that extend Channel functionality. # Learn more in {file:docs/VendorSpecificExtensions.textile} # - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification (Section 2.2.5) + # @see https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification (Section 2.2.5) class Channel # @@ -431,7 +431,7 @@ # @see Channel#default_exchange # @see Exchange # @see Exchange#initialize - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification (Section 3.1.3.1) + # @see https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification (Section 3.1.3.1) # # @return [Exchange] # @api public @@ -484,7 +484,7 @@ # # # @see Exchange - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification (Section 2.1.2.4) + # @see https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification (Section 2.1.2.4) # # @return [Exchange] # @api public @@ -534,7 +534,7 @@ # @see Exchange # @see Exchange#initialize # @see Channel#default_exchange - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification (Section 3.1.3.2) + # @see https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification (Section 3.1.3.2) # # @return [Exchange] # @api public @@ -645,7 +645,7 @@ # @see Exchange # @see Exchange#initialize # @see http://www.rabbitmq.com/faq.html#Binding-and-Routing RabbitMQ FAQ on routing & wildcards - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification (Section 3.1.3.3) + # @see https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification (Section 3.1.3.3) # # @return [Exchange] # @api public @@ -747,7 +747,7 @@ # @see Exchange # @see Exchange#initialize # @see Channel#default_exchange - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification (Section 3.1.3.3) + # @see https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification (Section 3.1.3.3) # # @return [Exchange] # @api public @@ -842,7 +842,7 @@ # # @see Queue # @see Queue#initialize - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification (Section 2.1.4) + # @see https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification (Section 2.1.4) # # @return [Queue] # @api public @@ -971,7 +971,7 @@ # # @param [Boolean] Desired flow state. # - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Reference.pdf AMQP 0.9.1 protocol documentation (Section 1.5.2.3.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol documentation (Section 1.5.2.3.) # @api public def flow(active = false, &block) @connection.send_frame(AMQ::Protocol::Channel::Flow.encode(@id, active)) @@ -1017,7 +1017,7 @@ # @api public # @see #reject # @see #recover - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Reference.pdf AMQP 0.9.1 protocol documentation (Section 1.8.3.13.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol documentation (Section 1.8.3.13.) def acknowledge(delivery_tag, multiple = false) @connection.send_frame(AMQ::Protocol::Basic::Ack.encode(self.id, delivery_tag, multiple)) @@ -1029,7 +1029,7 @@ # @api public # @see #acknowledge # @see #recover - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Reference.pdf AMQP 0.9.1 protocol documentation (Section 1.8.3.14.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol documentation (Section 1.8.3.14.) def reject(delivery_tag, requeue = true, multi = false) if multi @connection.send_frame(AMQ::Protocol::Basic::Nack.encode(self.id, delivery_tag, multi, requeue)) @@ -1046,7 +1046,7 @@ # @return [Channel] self # # @note RabbitMQ as of 2.3.1 does not support basic.recover with requeue = false. - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Reference.pdf AMQP 0.9.1 protocol documentation (Section 1.8.3.16.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol documentation (Section 1.8.3.16.) # @see #acknowledge # @api public def recover(requeue = true, &block) @@ -1118,9 +1118,9 @@ def confirm_select(nowait = false, &block) self.once_open do - if nowait && block - raise ArgumentError, "confirm.select with nowait = true and a callback makes no sense" - end + if nowait && block + raise ArgumentError, "confirm.select with nowait = true and a callback makes no sense" + end @uses_publisher_confirmations = true reset_publisher_index! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/amqp/exchange.rb new/lib/amqp/exchange.rb --- old/lib/amqp/exchange.rb 2017-02-02 12:32:45.000000000 +0100 +++ new/lib/amqp/exchange.rb 2018-01-02 13:18:19.000000000 +0100 @@ -132,9 +132,9 @@ # @see Channel#topic # @see Channel#headers # @see Queue - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification (Section 2.1.1) - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification (Section 2.1.5) - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification (Section 3.1.3) + # @see https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification (Section 2.1.1) + # @see https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification (Section 2.1.5) + # @see https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification (Section 3.1.3) class Exchange @@ -170,7 +170,7 @@ # AMQP::Exchange.default(channel).publish("make clean", routing_key => "tasks") # # @see Exchange - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification (Section 2.1.2.4) + # @see https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification (Section 2.1.2.4) # @note Do not confuse default exchange with amq.direct: amq.direct is a pre-defined direct # exchange that doesn't have any special routing semantics. # @return [Exchange] An instance that corresponds to the default exchange (of type direct). @@ -303,7 +303,7 @@ # @see Channel#topic # @see Channel#headers # @see Queue - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification (Section 3.1.3) + # @see https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification (Section 3.1.3) # # @return [Exchange] # @api public diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/amqp/queue.rb new/lib/amqp/queue.rb --- old/lib/amqp/queue.rb 2017-02-02 12:32:45.000000000 +0100 +++ new/lib/amqp/queue.rb 2018-01-02 13:18:19.000000000 +0100 @@ -118,7 +118,7 @@ # persistence. # # - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification (Section 2.1.1) + # @see https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification (Section 2.1.1) # @see AMQP::Exchange class Queue @@ -764,7 +764,7 @@ end # @api public - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Sections 1.8.3.9) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Sections 1.8.3.9) def on_delivery(&block) @default_consumer.on_delivery(&block) end # on_delivery(&block) @@ -939,7 +939,7 @@ # @return [Queue] self # # @api public - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.7.2.1.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.7.2.1.) def queue_declare(passive = false, durable = false, exclusive = false, auto_delete = false, nowait = false, arguments = nil, &block) raise ArgumentError, "declaration with nowait does not make sense for server-named queues! Either specify name other than empty string or use #declare without nowait" if nowait && self.anonymous? @@ -996,7 +996,7 @@ # @return [Queue] self # # @api public - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.7.2.9.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.7.2.9.) def queue_delete(if_unused = false, if_empty = false, nowait = false, &block) nowait = true unless block @connection.send_frame(AMQ::Protocol::Queue::Delete.encode(@channel.id, @name, if_unused, if_empty, nowait)) @@ -1019,7 +1019,7 @@ # @return [Queue] self # # @api public - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.7.2.3.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.7.2.3.) def queue_bind(exchange, routing_key = AMQ::Protocol::EMPTY_STRING, nowait = false, arguments = nil, &block) nowait = true unless block exchange_name = if exchange.respond_to?(:name) @@ -1048,7 +1048,7 @@ # @return [Queue] self # # @api public - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.7.2.5.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.7.2.5.) def queue_unbind(exchange, routing_key = AMQ::Protocol::EMPTY_STRING, arguments = nil, &block) exchange_name = if exchange.respond_to?(:name) exchange.name @@ -1079,7 +1079,7 @@ # @return [Queue] self # # @api public - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.8.3.3.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.8.3.3.) def basic_consume(no_ack = false, exclusive = false, nowait = false, no_local = false, arguments = nil, &block) raise RuntimeError.new("This queue already has default consumer. Please instantiate AMQP::Consumer directly to register additional consumers.") if @default_consumer @@ -1094,7 +1094,7 @@ # @return [Queue] self # # @api public - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.8.3.5.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.8.3.5.) def cancel(nowait = false, &block) raise "There is no default consumer for this queue. This usually means that you are trying to unsubscribe a queue that never was subscribed for messages in the first place." if @default_consumer.nil? @@ -1119,7 +1119,7 @@ # @return [Queue] self # # @api public - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.8.3.10.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.8.3.10.) def get(no_ack = false, &block) @connection.send_frame(AMQ::Protocol::Basic::Get.encode(@channel.id, @name, no_ack)) @@ -1140,7 +1140,7 @@ # @return [Queue] self # # @api public - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.7.2.7.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.7.2.7.) def queue_purge(nowait = false, &block) nowait = true unless block @connection.send_frame(AMQ::Protocol::Queue::Purge.encode(@channel.id, @name, nowait)) @@ -1164,7 +1164,7 @@ # @return [Queue] self # # @api public - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.8.3.13.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.8.3.13.) def acknowledge(delivery_tag) @channel.acknowledge(delivery_tag) @@ -1175,7 +1175,7 @@ # @return [Queue] self # # @api public - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.8.3.14.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.8.3.14.) def reject(delivery_tag, requeue = true) @channel.reject(delivery_tag, requeue) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/amqp/session.rb new/lib/amqp/session.rb --- old/lib/amqp/session.rb 2017-02-02 12:32:45.000000000 +0100 +++ new/lib/amqp/session.rb 2018-01-02 13:18:19.000000000 +0100 @@ -7,6 +7,7 @@ require "amqp/channel" require "amqp/channel_id_allocator" +require "amq/settings" module AMQP # AMQP session represents connection to the broker. Session objects let you define callbacks for @@ -62,37 +63,22 @@ # The locale defines the language in which the server will send reply texts. # - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.4.2.2) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.4.2.2) attr_accessor :locale # Client capabilities # - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.4.2.2.1) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.4.2.2.1) attr_accessor :client_properties - # Server properties - # - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.4.2.1.3) - attr_reader :server_properties - - # Server capabilities - # - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.4.2.1.3) - attr_reader :server_capabilities - - # Locales server supports - # - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.4.2.1.3) - attr_reader :server_locales - # Authentication mechanism used. # - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.4.2.2) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.4.2.2) attr_reader :mechanism # Authentication mechanisms broker supports. # - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.4.2.2) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.4.2.2) attr_reader :server_authentication_mechanisms # Channels within this connection. @@ -104,14 +90,15 @@ # Usable channel numbers are in the range 1..channel_max. # Zero indicates no specified limit. # - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Sections 1.4.2.5.1 and 1.4.2.6.1) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Sections 1.4.2.5.1 and 1.4.2.6.1) attr_accessor :channel_max # Maximum frame size that the server permits this connection to use. # - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Sections 1.4.2.5.2 and 1.4.2.6.2) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Sections 1.4.2.5.2 and 1.4.2.6.2) attr_accessor :frame_max + attr_accessor :connection_timeout attr_reader :known_hosts @@ -119,7 +106,7 @@ class << self # Settings def settings - @settings ||= AMQP::Settings.default + @settings ||= AMQ::Settings.default end def logger @@ -156,6 +143,9 @@ def initialize(*args, &block) super(*args) + connection_options_or_string = args.first + other_options = args[1] || {} + self.logger = self.class.logger # channel => collected frames. MK. @@ -170,9 +160,7 @@ @tcp_connection_failed = false @intentionally_closing_connection = false - # EventMachine::Connection's and Adapter's constructors arity - # make it easier to use *args. MK. - @settings = Settings.configure(args.first) + @settings = AMQ::Settings.configure(connection_options_or_string).merge(other_options) @on_tcp_connection_failure = Proc.new { |settings| closed! @@ -186,16 +174,17 @@ @on_possible_authentication_failure = @settings[:on_possible_authentication_failure] || Proc.new { |settings| raise self.class.authentication_failure_exception_class.new(settings) } - - @mechanism = @settings.fetch(:auth_mechanism, "PLAIN") + @mechanism = normalize_auth_mechanism(@settings.fetch(:auth_mechanism, "PLAIN")) @locale = @settings.fetch(:locale, "en_GB") @client_properties = Settings.client_properties.merge(@settings.fetch(:client_properties, Hash.new)) @auto_recovery = (!!@settings[:auto_recovery]) + @connection_timeout = (@settings[:timeout] || @settings[:connection_timeout] || 3).to_f + self.reset - self.set_pending_connect_timeout((@settings[:timeout] || 3).to_f) unless defined?(JRUBY_VERSION) - end # initialize(*args, &block) + self.set_pending_connect_timeout(@connection_timeout) unless defined?(JRUBY_VERSION) + end # initialize # @return [Boolean] true if this AMQP connection is currently open # @api plugin @@ -231,7 +220,7 @@ # Properly close connection with AMQ broker, as described in - # section 2.2.4 of the {http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Specification.pdf AMQP 0.9.1 specification}. + # section 2.2.4 of the {https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf AMQP 0.9.1 specification}. # # @api plugin # @see #close_connection @@ -263,19 +252,19 @@ # Server properties (product information, platform, et cetera) # # @return [Hash] - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Reference.pdf AMQP 0.9.1 protocol documentation (Section 1.4.2.1.3) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol documentation (Section 1.4.2.1.3) attr_reader :server_properties # Server capabilities (usually used to detect AMQP 0.9.1 extensions like basic.nack, publisher # confirms and so on) # # @return [Hash] - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Reference.pdf AMQP 0.9.1 protocol documentation (Section 1.4.2.1.3) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol documentation (Section 1.4.2.1.3) attr_reader :server_capabilities # Locales server supports # - # @see http://files.travis-ci.org/docs/amqp/0.9.1/AMQP091Reference.pdf AMQP 0.9.1 protocol documentation (Section 1.4.2.1.3) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol documentation (Section 1.4.2.1.3) attr_reader :server_locales # @return [AMQP::Broker] Broker this connection is established with @@ -451,8 +440,9 @@ # @option settings [Fixnum] :frame_max (131072) Maximum frame size to use. If broker cannot support frames this large, broker's maximum value will be used instead. # # @param [Hash] settings - def self.connect(settings = {}, &block) - @settings = Settings.configure(settings) + # def self.connect(settings = {}, &block) + def self.connect(connection_string_or_opts = ENV['RABBITMQ_URL'], other_options = {}, &block) + @settings = AMQ::Settings.configure(connection_string_or_opts).merge(other_options) instance = EventMachine.connect(@settings[:host], @settings[:port], self, @settings) instance.register_connection_callback(&block) @@ -485,14 +475,7 @@ # @see #reconnect # @api public def reconnect_to(connection_string_or_options, period = 5) - settings = case connection_string_or_options - when String then - AMQP.parse_connection_uri(connection_string_or_options) - when Hash then - connection_string_or_options - else - Hash.new - end + settings = AMQ::Settings.configure(connection_string_or_opts) if !@reconnecting @reconnecting = true @@ -763,7 +746,7 @@ # Zero means the server does not want a heartbeat. # # @return [Fixnum] Heartbeat interval this client uses, in seconds. - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.4.2.6) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.4.2.6) def heartbeat_interval @heartbeat_interval end # heartbeat_interval @@ -894,7 +877,7 @@ # Sends connection.open to the server. # # @api plugin - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.4.2.7) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.4.2.7) def open(vhost = "/") self.send_frame(AMQ::Protocol::Connection::Open.encode(vhost)) end @@ -995,7 +978,7 @@ # Handles connection.start. # # @api plugin - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.4.2.1.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.4.2.1.) def handle_start(connection_start) @server_properties = connection_start.server_properties @server_capabilities = @server_properties["capabilities"] @@ -1018,7 +1001,7 @@ # Handles Connection.Tune-Ok. # # @api plugin - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.4.2.6) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.4.2.6) def handle_tune(connection_tune) @channel_max = connection_tune.channel_max.freeze @frame_max = connection_tune.frame_max.freeze @@ -1035,7 +1018,7 @@ # Handles Connection.Open-Ok. # # @api plugin - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.4.2.8.) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.4.2.8.) def handle_open_ok(open_ok) @known_hosts = open_ok.known_hosts.dup.freeze @@ -1047,7 +1030,7 @@ # Handles connection.close. When broker detects a connection level exception, this method is called. # # @api plugin - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.5.2.9) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.5.2.9) def handle_close(conn_close) closed! # getting connection.close during connection negotiation means authentication @@ -1063,7 +1046,7 @@ # Handles Connection.Close-Ok. # # @api plugin - # @see http://bit.ly/amqp091reference AMQP 0.9.1 protocol reference (Section 1.4.2.10) + # @see https://www.rabbitmq.com/resources/specs/amqp-xml-doc0-9-1.pdf AMQP 0.9.1 protocol reference (Section 1.4.2.10) def handle_close_ok(close_ok) closed! self.disconnection_successful @@ -1185,5 +1168,18 @@ start_tls end end # upgrade_to_tls_if_necessary + + private + + def normalize_auth_mechanism(value) + case value + when [] then + "PLAIN" + when nil then + "PLAIN" + else + value + end + end end # Session end # AMQP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/amqp/settings.rb new/lib/amqp/settings.rb --- old/lib/amqp/settings.rb 2017-02-02 12:32:46.000000000 +0100 +++ new/lib/amqp/settings.rb 2018-01-02 13:18:19.000000000 +0100 @@ -1,46 +1,7 @@ # encoding: utf-8 -require "amq/protocol/client" -require "uri" - module AMQP - # @see AMQP::Settings.configure module Settings - # @private - AMQP_PORTS = {"amqp" => 5672, "amqps" => 5671}.freeze - - # @private - AMQPS = "amqps".freeze - - # Default connection settings used by AMQ clients - # - # @see AMQP::Settings.configure - def self.default - @default ||= { - # server - :host => "127.0.0.1", - :port => AMQ::Protocol::DEFAULT_PORT, - - # login - :user => "guest", - :pass => "guest", - :auth_mechanism => "PLAIN", - :vhost => "/", - - # connection timeout - :timeout => nil, - - # logging - :logging => false, - - # ssl - :ssl => false, - - :frame_max => 131072, - :heartbeat => 0 - } - end - CLIENT_PROPERTIES = { :platform => ::RUBY_DESCRIPTION, :product => "amqp gem", @@ -59,108 +20,5 @@ def self.client_properties @client_properties ||= CLIENT_PROPERTIES end - - - # Merges given configuration parameters with defaults and returns - # the result. - # - # @param [Hash] Configuration parameters to use. - # - # @option settings [String] :host ("127.0.0.1") Hostname AMQ broker runs on. - # @option settings [String] :port (5672) Port AMQ broker listens on. - # @option settings [String] :vhost ("/") Virtual host to use. - # @option settings [String] :user ("guest") Username to use for authentication. - # @option settings [String] :pass ("guest") Password to use for authentication. - # @option settings [String] :ssl (false) Should be use TLS (SSL) for connection? - # @option settings [String] :timeout (nil) Connection timeout. - # @option settings [String] :logging (false) Turns logging on or off. - # @option settings [String] :broker (nil) Broker name (use if you intend to use broker-specific features). - # @option settings [Fixnum] :frame_max (131072) Maximum frame size to use. If broker cannot support frames this large, broker's maximum value will be used instead. - # - # @return [Hash] Merged configuration parameters. - def self.configure(settings = nil) - case settings - when Hash then - settings = Hash[settings.map {|k, v| [k.to_sym, v] }] # symbolize keys - if username = settings.delete(:username) - settings[:user] ||= username - end - - if password = settings.delete(:password) - settings[:pass] ||= password - end - - - self.default.merge(settings) - when String then - settings = self.parse_amqp_url(settings) - self.default.merge(settings) - when NilClass then - self.default - end - end - - # Parses AMQP connection URI and returns its components as a hash. - # - # h2. vhost naming schemes - # - # It is convenient to be able to specify the AMQP connection - # parameters as a URI string, and various "amqp" URI schemes - # exist. Unfortunately, there is no standard for these URIs, so - # while the schemes share the basic idea, they differ in some - # details. This implementation aims to encourage URIs that work - # as widely as possible. - # - # The URI scheme should be "amqp", or "amqps" if SSL is required. - # - # The host, port, username and password are represented in the - # authority component of the URI in the same way as in http URIs. - # - # The vhost is obtained from the first segment of the path, with the - # leading slash removed. The path should contain only a single - # segment (i.e, the only slash in it should be the leading one). - # If the vhost is to include slashes or other reserved URI - # characters, these should be percent-escaped. - # - # @example How vhost is parsed - # - # AMQP::Settings.parse_amqp_url("amqp://dev.rabbitmq.com") # => vhost is nil, so default (/) will be used - # AMQP::Settings.parse_amqp_url("amqp://dev.rabbitmq.com/") # => vhost is an empty string - # AMQP::Settings.parse_amqp_url("amqp://dev.rabbitmq.com/%2Fvault") # => vhost is /vault - # AMQP::Settings.parse_amqp_url("amqp://dev.rabbitmq.com/production") # => vhost is production - # AMQP::Settings.parse_amqp_url("amqp://dev.rabbitmq.com/a.b.c") # => vhost is a.b.c - # AMQP::Settings.parse_amqp_url("amqp://dev.rabbitmq.com/foo/bar") # => ArgumentError - # - # - # @param [String] connection_string AMQP connection URI, à la JDBC connection string. For example: amqp://bus.megacorp.internal:5877. - # @return [Hash] Connection parameters (:username, :password, :vhost, :host, :port, :ssl) - # - # @raise [ArgumentError] When connection URI schema is not amqp or amqps, or the path contains multiple segments - # - # @see http://bit.ly/ks8MXK Connecting to The Broker documentation guide - # @api public - def self.parse_amqp_url(connection_string) - uri = URI.parse(connection_string) - raise ArgumentError.new("Connection URI must use amqp or amqps schema (example: amqp://bus.megacorp.internal:5766), learn more at http://rubyamqp.info") unless %w{amqp amqps}.include?(uri.scheme) - - opts = {} - - opts[:scheme] = uri.scheme - opts[:user] = URI.unescape(uri.user) if uri.user - opts[:pass] = URI.unescape(uri.password) if uri.password - opts[:host] = uri.host if uri.host - opts[:port] = uri.port || AMQP::Settings::AMQP_PORTS[uri.scheme] - opts[:ssl] = uri.scheme == AMQP::Settings::AMQPS - if uri.path =~ %r{^/(.*)} - raise ArgumentError.new("#{uri} has multiple-segment path; please percent-encode any slashes in the vhost name (e.g. /production => %2Fproduction). Learn more at http://rubyamqp.info") if $1.index('/') - opts[:vhost] = URI.unescape($1) - end - - opts - end - - def self.parse_connection_uri(connection_string) - parse_amqp_url(connection_string) - end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/amqp/version.rb new/lib/amqp/version.rb --- old/lib/amqp/version.rb 2017-02-02 12:32:46.000000000 +0100 +++ new/lib/amqp/version.rb 2018-01-02 13:18:19.000000000 +0100 @@ -6,5 +6,5 @@ # # @see AMQ::Protocol::VERSION # @return [String] AMQP gem version - VERSION = '1.7.0' + VERSION = '1.8.0' end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/amqp.rb new/lib/amqp.rb --- old/lib/amqp.rb 2017-02-02 12:32:45.000000000 +0100 +++ new/lib/amqp.rb 2018-01-02 13:18:19.000000000 +0100 @@ -229,22 +229,13 @@ # It takes exactly the same parameters. # @return [AMQP::Session] # @api public - def self.connect(connection_options_or_string = {}, other_options = {}, &block) - opts = case connection_options_or_string - when String then - AMQP::Settings.parse_connection_uri(connection_options_or_string) - when Hash then - connection_options_or_string - else - Hash.new - end - - AMQP::Session.connect(opts.merge(other_options), &block) + def self.connect(connection_options_or_string = ENV['RABBITMQ_URL'], other_options = {}, &block) + AMQP::Session.connect(connection_options_or_string, other_options, &block) end # @return [Hash] Default AMQP connection settings. This hash may be modified. # @api public def self.settings - @settings ||= AMQP::Settings.default + @settings ||= AMQ::Settings.default.merge(logging: false) end end # AMQP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2017-02-02 12:32:45.000000000 +0100 +++ new/metadata 2018-01-02 13:18:19.000000000 +0100 @@ -1,7 +1,7 @@ --- !ruby/object:Gem::Specification name: amqp version: !ruby/object:Gem::Version - version: 1.7.0 + version: 1.8.0 platform: ruby authors: - Aman Gupta @@ -10,7 +10,7 @@ autorequire: bindir: bin cert_chain: [] -date: 2017-02-02 00:00:00.000000000 Z +date: 2018-01-02 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: eventmachine @@ -32,14 +32,14 @@ requirements: - - ">=" - !ruby/object:Gem::Version - version: 2.1.0 + version: 2.2.0 type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version - version: 2.1.0 + version: 2.2.0 description: Mature EventMachine-based RabbitMQ client. email: - [email protected] @@ -48,28 +48,27 @@ extensions: [] extra_rdoc_files: - README.md -- docs/08Migration.textile -- docs/AMQP091ModelExplained.textile -- docs/Bindings.textile +- docs/Exchanges.textile - docs/Clustering.textile -- docs/ConnectingToTheBroker.textile +- docs/VendorSpecificExtensions.textile +- docs/PatternsAndUseCases.textile +- docs/Troubleshooting.textile +- docs/Bindings.textile +- docs/AMQP091ModelExplained.textile +- docs/Durability.textile - docs/ConnectionEncryptionWithTLS.textile +- docs/TestingWithEventedSpec.textile +- docs/Queues.textile - docs/DocumentationGuidesIndex.textile -- docs/Durability.textile -- docs/ErrorHandling.textile -- docs/Exchanges.textile - docs/GettingStarted.textile -- docs/PatternsAndUseCases.textile -- docs/Queues.textile +- docs/08Migration.textile +- docs/ConnectingToTheBroker.textile +- docs/ErrorHandling.textile - docs/RabbitMQVersions.textile - docs/RunningTests.textile -- docs/TestingWithEventedSpec.textile -- docs/Troubleshooting.textile -- docs/VendorSpecificExtensions.textile files: - ".gitignore" - ".rspec" -- ".ruby-version" - ".travis.yml" - ".yardopts" - ChangeLog.md @@ -77,7 +76,7 @@ - README.md - Rakefile - amqp.gemspec -- bin/ci/before_build.sh +- bin/ci/before_build - bin/cleanify.rb - bin/docup - bin/irb @@ -300,7 +299,6 @@ - spec/integration/tx_rollback_spec.rb - spec/spec_helper.rb - spec/unit/amqp/channel_id_allocation_spec.rb -- spec/unit/amqp/client_spec.rb - spec/unit/amqp/connection_spec.rb homepage: http://rubyamqp.info licenses: @@ -323,7 +321,7 @@ version: '0' requirements: [] rubyforge_project: amqp -rubygems_version: 2.5.2 +rubygems_version: 2.6.13 signing_key: specification_version: 4 summary: Mature EventMachine-based RabbitMQ client diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/integration/queue_redeclaration_with_incompatible_attributes_spec.rb new/spec/integration/queue_redeclaration_with_incompatible_attributes_spec.rb --- old/spec/integration/queue_redeclaration_with_incompatible_attributes_spec.rb 2017-02-02 12:32:46.000000000 +0100 +++ new/spec/integration/queue_redeclaration_with_incompatible_attributes_spec.rb 2018-01-02 13:18:19.000000000 +0100 @@ -36,7 +36,7 @@ channel.queue(name, options) expect { channel.queue(name, different_options) - }.to raise_error(AMQP::IncompatibleOptionsError) + }.to raise_error done(0.5) { @error_code.should == 406 @@ -62,7 +62,7 @@ channel.queue(name, options) expect { channel.queue(name, different_options) - }.to_not raise_error(AMQP::IncompatibleOptionsError) + }.to_not raise_error done(0.5) { @error_code.should == 406 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/unit/amqp/client_spec.rb new/spec/unit/amqp/client_spec.rb --- old/spec/unit/amqp/client_spec.rb 2017-02-02 12:32:46.000000000 +0100 +++ new/spec/unit/amqp/client_spec.rb 1970-01-01 01:00:00.000000000 +0100 @@ -1,104 +0,0 @@ -# encoding: utf-8 - -require 'spec_helper' - -require "amqp/settings" - -describe AMQP::Settings do - - # - # Examples - # - - - describe ".parse_connection_uri(connection_string)" do - context "when schema is not one of [amqp, amqps]" do - it "raises ArgumentError" do - expect { - described_class.parse_connection_uri("http://dev.rabbitmq.com") - }.to raise_error(ArgumentError, /amqp or amqps schema/) - end - end - - - it "handles amqp:// URIs w/o path part" do - val = described_class.parse_connection_uri("amqp://dev.rabbitmq.com") - - val[:vhost].should be_nil # in this case, default / will be used - val[:host].should == "dev.rabbitmq.com" - val[:port].should == 5672 - val[:scheme].should == "amqp" - val[:ssl].should be_false - end - - it "handles amqps:// URIs w/o path part" do - val = described_class.parse_connection_uri("amqps://dev.rabbitmq.com") - - val[:vhost].should be_nil - val[:host].should == "dev.rabbitmq.com" - val[:port].should == 5671 - val[:scheme].should == "amqps" - val[:ssl].should be_true - end - - - context "when URI ends in a slash" do - it "parses vhost as an empty string" do - val = described_class.parse_connection_uri("amqp://dev.rabbitmq.com/") - - val[:host].should == "dev.rabbitmq.com" - val[:port].should == 5672 - val[:scheme].should == "amqp" - val[:ssl].should be_false - val[:vhost].should == "" - end - end - - - context "when URI ends in /%2Fvault" do - it "parses vhost as /vault" do - val = described_class.parse_connection_uri("amqp://dev.rabbitmq.com/%2Fvault") - - val[:host].should == "dev.rabbitmq.com" - val[:port].should == 5672 - val[:scheme].should == "amqp" - val[:ssl].should be_false - val[:vhost].should == "/vault" - end - end - - - context "when URI is amqp://dev.rabbitmq.com/a.path.without.slashes" do - it "parses vhost as a.path.without.slashes" do - val = described_class.parse_connection_uri("amqp://dev.rabbitmq.com/a.path.without.slashes") - - val[:host].should == "dev.rabbitmq.com" - val[:port].should == 5672 - val[:scheme].should == "amqp" - val[:ssl].should be_false - val[:vhost].should == "a.path.without.slashes" - end - end - - context "when URI is amqp://dev.rabbitmq.com/a/path/with/slashes" do - it "raises an ArgumentError" do - lambda { described_class.parse_connection_uri("amqp://dev.rabbitmq.com/a/path/with/slashes") }.should raise_error(ArgumentError) - end - end - - - context "when URI has username:password, for instance, amqp://hedgehog:[email protected]" do - it "parses them out" do - val = described_class.parse_connection_uri("amqp://hedgehog:[email protected]") - - val[:host].should == "hub.megacorp.internal" - val[:port].should == 5672 - val[:scheme].should == "amqp" - val[:ssl].should be_false - val[:user].should == "hedgehog" - val[:pass].should == "t0ps3kr3t" - val[:vhost].should be_nil # in this case, default / will be used - end - end - end -end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/unit/amqp/connection_spec.rb new/spec/unit/amqp/connection_spec.rb --- old/spec/unit/amqp/connection_spec.rb 2017-02-02 12:32:46.000000000 +0100 +++ new/spec/unit/amqp/connection_spec.rb 2018-01-02 13:18:19.000000000 +0100 @@ -16,10 +16,27 @@ s[:port].should == 5672 s[:user].should == "guest" s[:pass].should == "guest" - s[:heartbeat].should == 0 - s[:auth_mechanism].should == "PLAIN" + s[:heartbeat].should be_nil + s[:auth_mechanism].should eq([]) end + describe "connection to RabbitMQ with a connection string" do + include EventedSpec::SpecHelper + + em_before { AMQP.cleanup_state } + em_after { AMQP.cleanup_state } + + it 'parses URI string' do + em do + AMQP.start("amqp://guest:[email protected]?heartbeat=10&connection_timeout=100") do |session| + expect(session.heartbeat_interval).to eq(10) + expect(session.connection_timeout).to eq(100) + session.close + end + done(0.3) + end + end + end describe '.start' do
