bunny 1.0.7 → 2.24.0

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.
Files changed (168) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +92 -87
  3. data/lib/amq/protocol/extensions.rb +2 -0
  4. data/lib/bunny/authentication/credentials_encoder.rb +2 -0
  5. data/lib/bunny/authentication/external_mechanism_encoder.rb +2 -0
  6. data/lib/bunny/authentication/plain_mechanism_encoder.rb +2 -0
  7. data/lib/bunny/channel.rb +485 -186
  8. data/lib/bunny/channel_id_allocator.rb +8 -4
  9. data/lib/bunny/concurrent/atomic_fixnum.rb +2 -0
  10. data/lib/bunny/concurrent/condition.rb +2 -0
  11. data/lib/bunny/concurrent/continuation_queue.rb +37 -13
  12. data/lib/bunny/concurrent/synchronized_sorted_set.rb +2 -0
  13. data/lib/bunny/consumer.rb +20 -13
  14. data/lib/bunny/consumer_tag_generator.rb +6 -2
  15. data/lib/bunny/consumer_work_pool.rb +37 -7
  16. data/lib/bunny/cruby/socket.rb +51 -22
  17. data/lib/bunny/cruby/ssl_socket.rb +68 -5
  18. data/lib/bunny/delivery_info.rb +3 -1
  19. data/lib/bunny/exceptions.rb +27 -4
  20. data/lib/bunny/exchange.rb +35 -29
  21. data/lib/bunny/framing.rb +2 -0
  22. data/lib/bunny/get_response.rb +85 -0
  23. data/lib/bunny/heartbeat_sender.rb +9 -6
  24. data/lib/bunny/message_properties.rb +2 -0
  25. data/lib/bunny/queue.rb +89 -41
  26. data/lib/bunny/reader_loop.rb +72 -28
  27. data/lib/bunny/return_info.rb +2 -0
  28. data/lib/bunny/session.rb +621 -225
  29. data/lib/bunny/socket.rb +7 -12
  30. data/lib/bunny/ssl_socket.rb +7 -12
  31. data/lib/bunny/test_kit.rb +15 -0
  32. data/lib/bunny/timeout.rb +3 -12
  33. data/lib/bunny/timestamp.rb +24 -0
  34. data/lib/bunny/transport.rb +223 -98
  35. data/lib/bunny/version.rb +2 -1
  36. data/lib/bunny/versioned_delivery_tag.rb +2 -0
  37. data/lib/bunny.rb +54 -8
  38. metadata +38 -224
  39. data/.gitignore +0 -22
  40. data/.rspec +0 -3
  41. data/.ruby-version +0 -1
  42. data/.travis.yml +0 -23
  43. data/.yardopts +0 -8
  44. data/ChangeLog.md +0 -1092
  45. data/Gemfile +0 -54
  46. data/LICENSE +0 -21
  47. data/benchmarks/basic_publish/with_128K_messages.rb +0 -35
  48. data/benchmarks/basic_publish/with_1k_messages.rb +0 -35
  49. data/benchmarks/basic_publish/with_4K_messages.rb +0 -35
  50. data/benchmarks/basic_publish/with_64K_messages.rb +0 -35
  51. data/benchmarks/channel_open.rb +0 -28
  52. data/benchmarks/mutex_and_monitor.rb +0 -42
  53. data/benchmarks/queue_declare.rb +0 -29
  54. data/benchmarks/queue_declare_and_bind.rb +0 -29
  55. data/benchmarks/queue_declare_bind_and_delete.rb +0 -29
  56. data/benchmarks/synchronized_sorted_set.rb +0 -53
  57. data/benchmarks/write_vs_write_nonblock.rb +0 -49
  58. data/bin/ci/before_build.sh +0 -31
  59. data/bunny.gemspec +0 -40
  60. data/examples/connection/authentication_failure.rb +0 -16
  61. data/examples/connection/automatic_recovery_with_basic_get.rb +0 -40
  62. data/examples/connection/automatic_recovery_with_client_named_queues.rb +0 -36
  63. data/examples/connection/automatic_recovery_with_multiple_consumers.rb +0 -46
  64. data/examples/connection/automatic_recovery_with_server_named_queues.rb +0 -35
  65. data/examples/connection/channel_level_exception.rb +0 -35
  66. data/examples/connection/disabled_automatic_recovery.rb +0 -34
  67. data/examples/connection/heartbeat.rb +0 -17
  68. data/examples/connection/manually_reconnecting_consumer.rb +0 -23
  69. data/examples/connection/manually_reconnecting_publisher.rb +0 -28
  70. data/examples/connection/unknown_host.rb +0 -16
  71. data/examples/guides/exchanges/direct_exchange_routing.rb +0 -36
  72. data/examples/guides/exchanges/fanout_exchange_routing.rb +0 -28
  73. data/examples/guides/exchanges/headers_exchange_routing.rb +0 -31
  74. data/examples/guides/exchanges/mandatory_messages.rb +0 -30
  75. data/examples/guides/extensions/alternate_exchange.rb +0 -28
  76. data/examples/guides/extensions/basic_nack.rb +0 -33
  77. data/examples/guides/extensions/connection_blocked.rb +0 -35
  78. data/examples/guides/extensions/consumer_cancellation_notification.rb +0 -39
  79. data/examples/guides/extensions/dead_letter_exchange.rb +0 -32
  80. data/examples/guides/extensions/exchange_to_exchange_bindings.rb +0 -29
  81. data/examples/guides/extensions/per_message_ttl.rb +0 -36
  82. data/examples/guides/extensions/per_queue_message_ttl.rb +0 -36
  83. data/examples/guides/extensions/publisher_confirms.rb +0 -28
  84. data/examples/guides/extensions/queue_lease.rb +0 -26
  85. data/examples/guides/extensions/sender_selected_distribution.rb +0 -32
  86. data/examples/guides/getting_started/blabbr.rb +0 -27
  87. data/examples/guides/getting_started/hello_world.rb +0 -20
  88. data/examples/guides/getting_started/weathr.rb +0 -47
  89. data/examples/guides/queues/one_off_consumer.rb +0 -23
  90. data/examples/guides/queues/redeliveries.rb +0 -79
  91. data/lib/bunny/compatibility.rb +0 -24
  92. data/lib/bunny/concurrent/linked_continuation_queue.rb +0 -61
  93. data/lib/bunny/jruby/socket.rb +0 -40
  94. data/lib/bunny/jruby/ssl_socket.rb +0 -53
  95. data/lib/bunny/system_timer.rb +0 -20
  96. data/profiling/basic_publish/with_4K_messages.rb +0 -33
  97. data/repl +0 -3
  98. data/spec/compatibility/queue_declare_spec.rb +0 -44
  99. data/spec/compatibility/queue_declare_with_default_channel_spec.rb +0 -33
  100. data/spec/higher_level_api/integration/basic_ack_spec.rb +0 -71
  101. data/spec/higher_level_api/integration/basic_cancel_spec.rb +0 -76
  102. data/spec/higher_level_api/integration/basic_consume_spec.rb +0 -225
  103. data/spec/higher_level_api/integration/basic_consume_with_objects_spec.rb +0 -54
  104. data/spec/higher_level_api/integration/basic_get_spec.rb +0 -48
  105. data/spec/higher_level_api/integration/basic_nack_spec.rb +0 -79
  106. data/spec/higher_level_api/integration/basic_publish_spec.rb +0 -89
  107. data/spec/higher_level_api/integration/basic_qos_spec.rb +0 -29
  108. data/spec/higher_level_api/integration/basic_recover_spec.rb +0 -18
  109. data/spec/higher_level_api/integration/basic_reject_spec.rb +0 -74
  110. data/spec/higher_level_api/integration/basic_return_spec.rb +0 -33
  111. data/spec/higher_level_api/integration/channel_close_spec.rb +0 -25
  112. data/spec/higher_level_api/integration/channel_flow_spec.rb +0 -21
  113. data/spec/higher_level_api/integration/channel_open_spec.rb +0 -57
  114. data/spec/higher_level_api/integration/confirm_select_spec.rb +0 -19
  115. data/spec/higher_level_api/integration/connection_spec.rb +0 -400
  116. data/spec/higher_level_api/integration/connection_stop_spec.rb +0 -26
  117. data/spec/higher_level_api/integration/consistent_hash_exchange_spec.rb +0 -50
  118. data/spec/higher_level_api/integration/consumer_cancellation_notification_spec.rb +0 -128
  119. data/spec/higher_level_api/integration/dead_lettering_spec.rb +0 -52
  120. data/spec/higher_level_api/integration/exchange_bind_spec.rb +0 -31
  121. data/spec/higher_level_api/integration/exchange_declare_spec.rb +0 -204
  122. data/spec/higher_level_api/integration/exchange_delete_spec.rb +0 -105
  123. data/spec/higher_level_api/integration/exchange_unbind_spec.rb +0 -40
  124. data/spec/higher_level_api/integration/exclusive_queue_spec.rb +0 -28
  125. data/spec/higher_level_api/integration/heartbeat_spec.rb +0 -31
  126. data/spec/higher_level_api/integration/merry_go_round_spec.rb +0 -85
  127. data/spec/higher_level_api/integration/message_properties_access_spec.rb +0 -95
  128. data/spec/higher_level_api/integration/predeclared_exchanges_spec.rb +0 -24
  129. data/spec/higher_level_api/integration/publisher_confirms_spec.rb +0 -77
  130. data/spec/higher_level_api/integration/publishing_edge_cases_spec.rb +0 -65
  131. data/spec/higher_level_api/integration/queue_bind_spec.rb +0 -109
  132. data/spec/higher_level_api/integration/queue_declare_spec.rb +0 -190
  133. data/spec/higher_level_api/integration/queue_delete_spec.rb +0 -41
  134. data/spec/higher_level_api/integration/queue_purge_spec.rb +0 -30
  135. data/spec/higher_level_api/integration/queue_unbind_spec.rb +0 -54
  136. data/spec/higher_level_api/integration/read_only_consumer_spec.rb +0 -60
  137. data/spec/higher_level_api/integration/sender_selected_distribution_spec.rb +0 -36
  138. data/spec/higher_level_api/integration/tls_connection_spec.rb +0 -127
  139. data/spec/higher_level_api/integration/tx_commit_spec.rb +0 -21
  140. data/spec/higher_level_api/integration/tx_rollback_spec.rb +0 -21
  141. data/spec/higher_level_api/integration/with_channel_spec.rb +0 -25
  142. data/spec/issues/issue100_spec.rb +0 -42
  143. data/spec/issues/issue141_spec.rb +0 -44
  144. data/spec/issues/issue78_spec.rb +0 -75
  145. data/spec/issues/issue83_spec.rb +0 -31
  146. data/spec/issues/issue97_attachment.json +0 -1
  147. data/spec/issues/issue97_spec.rb +0 -176
  148. data/spec/lower_level_api/integration/basic_cancel_spec.rb +0 -69
  149. data/spec/lower_level_api/integration/basic_consume_spec.rb +0 -100
  150. data/spec/spec_helper.rb +0 -64
  151. data/spec/stress/channel_open_stress_spec.rb +0 -51
  152. data/spec/stress/channel_open_stress_with_single_threaded_connection_spec.rb +0 -28
  153. data/spec/stress/concurrent_consumers_stress_spec.rb +0 -69
  154. data/spec/stress/concurrent_publishers_stress_spec.rb +0 -57
  155. data/spec/stress/connection_open_close_spec.rb +0 -40
  156. data/spec/stress/long_running_consumer_spec.rb +0 -83
  157. data/spec/tls/cacert.pem +0 -18
  158. data/spec/tls/client_cert.pem +0 -18
  159. data/spec/tls/client_key.pem +0 -27
  160. data/spec/tls/server_cert.pem +0 -18
  161. data/spec/tls/server_key.pem +0 -27
  162. data/spec/unit/bunny_spec.rb +0 -15
  163. data/spec/unit/concurrent/atomic_fixnum_spec.rb +0 -35
  164. data/spec/unit/concurrent/condition_spec.rb +0 -82
  165. data/spec/unit/concurrent/linked_continuation_queue_spec.rb +0 -35
  166. data/spec/unit/concurrent/synchronized_sorted_set_spec.rb +0 -73
  167. data/spec/unit/system_timer_spec.rb +0 -10
  168. data/spec/unit/version_delivery_tag_spec.rb +0 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 644fb83ebe90f39169723ddefd72ec581e7e055f
4
- data.tar.gz: f359455c828d498288f5a1ac5aa1a34d008e6982
2
+ SHA256:
3
+ metadata.gz: 20682c9d4288b25e0aec7dcf5ad54276c7494faa45da1101eeedafa4f0f52abf
4
+ data.tar.gz: e88c87ecce0902f284a2bf54540c322afd3ac4c1fa625fb109d08d325a4faafa
5
5
  SHA512:
6
- metadata.gz: 8ed7e1beffc8b2c86a509009664d9a648cd65afca1c4eebb2d049a157664135d53082a8032ce84373a505d2f964a042c117b46d16f106ee09ba6bbe71bbb0969
7
- data.tar.gz: ef055f07569c758663bd0ed0507430d94062b5d4ab7bae8258bc475d9945f775df0b8f74463fbb2044bd63a9a785509a976b37e2fa58d51e89221116c4ff262c
6
+ metadata.gz: 8c5668062269ae3be5c160a410432e712b110fc30f9fb6ddcde0c6ce14ddccc5c60e2c298eb21ce4a0512b4564f20833e4556e3d4532fd26918b674b4163ccb7
7
+ data.tar.gz: e621b5fd31913bf21d48380f0f8e198075f74e7bcec9c97feb17f32ae206b28551b87dd52c83640e72465afce98e12e5e611db940561ea9edbd3ef281f97169e
data/README.md CHANGED
@@ -1,19 +1,19 @@
1
1
  # Bunny, a Ruby RabbitMQ Client
2
2
 
3
- Bunny is a synchronous RabbitMQ client that focuses on ease of use. It
4
- is feature complete, supports all RabbitMQ 3.0 features and does not
3
+ Bunny is a RabbitMQ client that focuses on ease of use. It
4
+ is feature complete, supports all recent RabbitMQ features and does not
5
5
  have any heavyweight dependencies.
6
6
 
7
7
 
8
8
  ## I Know What RabbitMQ and Bunny are, How Do I Get Started?
9
9
 
10
- [Right here](http://rubybunny.info/articles/getting_started.html)!
10
+ [Right here](https://www.rabbitmq.com/getstarted.html)!
11
11
 
12
12
 
13
13
  ## What is Bunny Good For?
14
14
 
15
- One can use amqp gem to make Ruby applications interoperate with other
16
- applications (both Ruby and not). Complexity and size may vary from
15
+ One can use Bunny to make Ruby applications interoperate with other
16
+ applications (both built in Ruby and not). Complexity and size may vary from
17
17
  simple work queues to complex multi-stage data processing workflows that involve
18
18
  many applications built with all kinds of technologies.
19
19
 
@@ -43,56 +43,59 @@ Specific examples:
43
43
  Web applications that display that information in the real time.
44
44
 
45
45
 
46
-
47
46
  ## Supported Ruby Versions
48
47
 
49
- Bunny 0.9 and more recent versions support
48
+ Modern Bunny versions support
50
49
 
51
- * CRuby 1.9.3, 1.9.2, 2.0.0, and 1.8.7
52
- * JRuby 1.7+
53
- * Rubinius 2.0+
50
+ * CRuby 3.2 through 3.4 (inclusive)
51
+ * [TruffleRuby](https://www.graalvm.org/ruby/)
54
52
 
53
+ For environments that use TLS, Bunny expects Ruby installations to use a recent enough OpenSSL version that
54
+ **includes support for [TLS 1.3](https://www.rabbitmq.com/docs/ssl#tls1.3)**.
55
55
 
56
- ## Supported RabbitMQ Versions
56
+ ### JRuby
57
57
 
58
- Bunny `0.8.x` and later versions only support RabbitMQ 2.x and 3.x.
59
- Bunny `0.7.x` and earlier versions support RabbitMQ 1.x and 2.x.
58
+ Bunny no longer supports JRuby.
60
59
 
60
+ JRuby users should use [March Hare](http://rubymarchhare.info), which has a similar API
61
+ and is built on top of the RabbitMQ Java client specifically for JRuby.
61
62
 
62
- ## Project Maturity
63
63
 
64
- Bunny is a mature library (started in early 2009) library with
65
- a stable public API.
64
+ ## Supported RabbitMQ Versions
66
65
 
67
- Before version 0.9, **a lot** of functionality was missing. Version
68
- 0.9 can be considered to be "second birthday" for Bunny as it was
69
- rewritten from scratch with over a dozen of preview releases over the
70
- course of about a year.
66
+ Modern Bunny releases target [currently community supported RabbitMQ release series](https://www.rabbitmq.com/release-information).
71
67
 
72
- We (the maintainers) made our best effort to keep the new version as
73
- backwards compatible as possible but within reason.
68
+ The protocol implemented by Bunny was first introduced in RabbitMQ 2.0 and has evolved
69
+ via extensions and with next to no breaking changes, so all key Bunny operations can be used with a wide range
70
+ of RabbitMQ versions, accounting for the few potentially breaking changes they
71
+ may introduce, e.g. the idempotency of `queue.delete` operations.
74
72
 
75
73
 
76
- ## Installation & Bundler Dependency
74
+ ## Change Log
77
75
 
78
- ### Most Recent Release
76
+ [Change log](https://github.com/ruby-amqp/bunny/blob/main/ChangeLog.md).
79
77
 
80
- [![Gem Version](https://badge.fury.io/rb/bunny.png)](http://badge.fury.io/rb/bunny)
81
78
 
82
- ### With Rubygems
79
+ ## Installation & Bundler Dependency
83
80
 
84
- To install Bunny with RubyGems:
81
+ ### Most Recent Release
85
82
 
86
- ```
87
- gem install bunny
88
- ```
83
+ [![Gem Version](https://badge.fury.io/rb/bunny.svg)](http://badge.fury.io/rb/bunny)
89
84
 
90
85
  ### Bundler Dependency
91
86
 
92
87
  To use Bunny in a project managed with Bundler:
93
88
 
94
89
  ``` ruby
95
- gem "bunny", ">= 1.0.0.rc2"
90
+ gem "bunny", ">= 2.23.0"
91
+ ```
92
+
93
+ ### With Rubygems
94
+
95
+ To install Bunny with RubyGems:
96
+
97
+ ```
98
+ gem install bunny
96
99
  ```
97
100
 
98
101
 
@@ -101,7 +104,7 @@ gem "bunny", ">= 1.0.0.rc2"
101
104
  Below is a small snippet that demonstrates how to publish
102
105
  and synchronously consume ("pull API") messages with Bunny.
103
106
 
104
- For a 15 minute tutorial using more practical examples, see [Getting Started with RabbitMQ and Ruby using Bunny](http://rubybunny.info/articles/getting_started.html).
107
+ For a 15 minute tutorial using more practical examples, see [Getting Started with RabbitMQ and Ruby using Bunny](https://www.rabbitmq.com/tutorials/tutorial-one-ruby.html).
105
108
 
106
109
  ``` ruby
107
110
  require "bunny"
@@ -112,20 +115,31 @@ conn.start
112
115
 
113
116
  # open a channel
114
117
  ch = conn.create_channel
118
+ ch.confirm_select
115
119
 
116
120
  # declare a queue
117
121
  q = ch.queue("test1")
122
+ q.subscribe(manual_ack: true) do |delivery_info, metadata, payload|
123
+ puts "This is the message: #{payload}"
124
+ # acknowledge the delivery so that RabbitMQ can mark it for deletion
125
+ ch.ack(delivery_info.delivery_tag)
126
+ end
118
127
 
119
128
  # publish a message to the default exchange which then gets routed to this queue
120
129
  q.publish("Hello, everybody!")
121
130
 
122
- # fetch a message from the queue
123
- delivery_info, metadata, payload = q.pop
131
+ # await confirmations from RabbitMQ, see
132
+ # https://www.rabbitmq.com/publishers.html#data-safety for details
133
+ ch.wait_for_confirms
124
134
 
125
- puts "This is the message: #{payload}"
135
+ # give the above consumer some time consume the delivery and print out the message
136
+ sleep 1
126
137
 
138
+ puts "Done"
139
+
140
+ ch.close
127
141
  # close the connection
128
- conn.stop
142
+ conn.close
129
143
  ```
130
144
 
131
145
 
@@ -133,21 +147,33 @@ conn.stop
133
147
 
134
148
  ### Getting Started
135
149
 
136
- For a 15 minute tutorial using more practical examples, see [Getting Started with RabbitMQ and Ruby using Bunny](http://rubybunny.info/articles/getting_started.html).
150
+ For a 15 minute tutorial using more practical examples, see [Getting Started with RabbitMQ and Ruby using Bunny](https://github.com/ruby-amqp/bunny/blob/main/docs/guides/getting_started.md).
137
151
 
138
152
  ### Guides
139
153
 
140
- Other documentation guides are available at [rubybunny.info](http://rubybunny.info):
154
+ Bunny documentation guides are [under `docs/guides` in this repository](https://github.com/ruby-amqp/bunny/tree/main/docs/guides):
141
155
 
142
- * [Queues and Consumers](http://rubybunny.info/articles/queues.html)
143
- * [Exchanges and Publishers](http://rubybunny.info/articles/exchanges.html)
156
+ * [Queues and Consumers](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/queues.md)
157
+ * [Exchanges and Publishers](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/exchanges.md)
144
158
  * [AMQP 0.9.1 Model Explained](http://www.rabbitmq.com/tutorials/amqp-concepts.html)
145
- * [Connecting to RabbitMQ](http://rubybunny.info/articles/connecting.html)
146
- * [Error Handling and Recovery](http://rubybunny.info/articles/error_handling.html)
147
- * [TLS/SSL Support](http://rubybunny.info/articles/tls.html)
148
- * [Bindings](http://rubybunny.info/articles/bindings.html)
149
- * [Using RabbitMQ Extensions with Bunny](http://rubybunny.info/articles/extensions.html)
150
- * [Durability and Related Matters](http://rubybunny.info/articles/durability.html)
159
+ * [Connecting to RabbitMQ](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/connecting.md)
160
+ * [Error Handling and Recovery](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/error_handling.md)
161
+ * [TLS/SSL Support](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/tls.md)
162
+ * [Bindings](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/bindings.md)
163
+ * [Using RabbitMQ Extensions with Bunny](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/extensions.md)
164
+ * [Durability and Related Matters](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/durability.md)
165
+
166
+ Some highly relevant RabbitMQ documentation guides:
167
+
168
+ * [Connections](https://www.rabbitmq.com/docs/connections)
169
+ * [Channels](https://www.rabbitmq.com/docs/channels)
170
+ * [Queues](https://www.rabbitmq.com/docs/queues)
171
+ * [Quorum queues](https://www.rabbitmq.com/docs/quorum-queues)
172
+ * [Streams](https://rabbitmq.com/docs/streams) (Bunny can perform basic operations on streams even though it does not implement the [RabbitMQ Stream protocol](https://github.com/rabbitmq/rabbitmq-server/blob/v4.0.x/deps/rabbitmq_stream/docs/PROTOCOL.adoc))
173
+ * [Publishers](https://www.rabbitmq.com/docs/publishers)
174
+ * [Consumers](https://www.rabbitmq.com/docs/consumers)
175
+ * Data safety: publisher and consumer [Confirmations](https://www.rabbitmq.com/docs/confirms)
176
+ * [Production Checklist](https://www.rabbitmq.com/docs/production-checklist)
151
177
 
152
178
  ### API Reference
153
179
 
@@ -158,62 +184,41 @@ Other documentation guides are available at [rubybunny.info](http://rubybunny.in
158
184
 
159
185
  ### Mailing List
160
186
 
161
- [Bunny has a mailing list](http://groups.google.com/group/ruby-amqp). We encourage you
162
- to also join the [rabbitmq-discuss](https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss) mailing list. Feel free to ask any questions that you may have.
163
-
187
+ Please use [GitHub Discussions](https://github.com/ruby-amqp/bunny/discussions) for questions.
164
188
 
165
- ### IRC
189
+ GitHub issues should be used for specific, well understood, actionable
190
+ maintainers and contributors can work on.
166
191
 
167
- For more immediate help, please join `#rabbitmq` on `irc.freenode.net`.
192
+ We encourage you to keep an eye on [RabbitMQ Discussions](https://github.com/rabbitmq/rabbitmq-server/discussions),
193
+ join the [RabbitMQ mailing list](https://groups.google.com/forum/#!forum/rabbitmq-users)
194
+ and the [RabbitMQ Discord server](https://rabbitmq.com/discord).
168
195
 
169
196
 
170
- ### News & Announcements on Twitter
171
-
172
- To subscribe for announcements of releases, important changes and so on, please follow [@rubyamqp](https://twitter.com/#!/rubyamqp) on Twitter.
173
-
174
- More detailed announcements can be found in the blogs
197
+ ### Reporting Issues
175
198
 
176
- * [RabbitMQ Ruby clients blog](http://blog.rubyrabbitmq.info)
177
- * [Bunny Blog](http://bunnyamqp.wordpress.com)
199
+ If you find a bug you understand well, poor default, incorrect or unclear piece of documentation,
200
+ or missing feature, please [file an
201
+ issue](http://github.com/ruby-amqp/bunny/issues) on GitHub.
178
202
 
203
+ Please use [Bunny's mailing list](http://groups.google.com/group/ruby-amqp) for questions,
204
+ investigations, and discussions. GitHub issues should be used for specific, well understood, actionable
205
+ maintainers and contributors can work on.
179
206
 
180
- ### Reporting Issues
181
-
182
- If you find a bug, poor default, missing feature or find any part of
183
- the API inconvenient, please [file an
184
- issue](http://github.com/ruby-amqp/bunny/issues) on GitHub. When
185
- filing an issue, please specify which Bunny and RabbitMQ versions you
186
- are using, provide recent RabbitMQ log file contents if possible, and
187
- try to explain what behavior you expected and why. Bonus points for
188
- contributing failing test cases.
207
+ When filing an issue, please specify which Bunny and RabbitMQ versions you
208
+ are using, provide recent RabbitMQ log file contents, full exception stack traces,
209
+ and steps to reproduce (or failing test cases).
189
210
 
190
211
 
191
212
  ## Other Ruby RabbitMQ Clients
192
213
 
193
- Other widely used Ruby RabbitMQ clients are [March
194
- Hare](http://rubymarchhare.info) (JRuby-only) and [amqp
195
- gem](http://rubyamqp.info). Both are mature libraries and require
196
- RabbitMQ 2.x or 3.x.
214
+ The other widely used Ruby RabbitMQ client is [March Hare](http://rubymarchhare.info) (JRuby-only).
215
+ It's a mature library that require RabbitMQ 3.3.x or later.
197
216
 
198
217
 
199
218
  ## Contributing
200
219
 
201
- First, clone the repository and run
202
-
203
- bundle install --binstubs
204
-
205
- then set up RabbitMQ vhosts with
206
-
207
- ./bin/ci/before_build.sh
208
-
209
- (if needed, set `RABBITMQCTL` env variable to point to `rabbitmqctl` you want to use)
210
-
211
- and then run tests with
212
-
213
- CI=true ./bin/rspec -cfs spec
214
-
215
- After that create a branch and make your changes on it. Once you are done with your changes and all tests pass, submit a pull request
216
- on GitHub.
220
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for more information
221
+ about running various test suites.
217
222
 
218
223
 
219
224
  ## License
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # @private
2
4
  module AMQ
3
5
  # @private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bunny
2
4
  # Contains credentials encoding implementations for various
3
5
  # authentication strategies.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bunny/authentication/credentials_encoder"
2
4
 
3
5
  module Bunny
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bunny/authentication/credentials_encoder"
2
4
 
3
5
  module Bunny