• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

umbrellio / rabbit_messaging / 35981731501
93%

Build:
DEFAULT BRANCH: master
Ran 24 Sep 2026 09:32AM UTC
Jobs 1
Files 20
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

24 Sep 2026 09:31AM UTC coverage: 92.615% (+0.07%) from 92.55%
35981731501

push

github

web-flow
Upgrade to Bunny 3 (#40)

* Upgrade to Bunny 3

Bunny 3 requires Ruby >= 3.2 and adds runtime dependencies on the
openssl (>= 3.3) and logger (>= 1.7) gems. It also needs OpenSSL with
TLS 1.3 support, which Bunny has targeted since 2.20.1.

The private Bunny::Channel internals used by the RabbitExtensions
monkeypatch (@unconfirmed_set_mutex, @only_acks_received and
handle_basic_return) are unchanged in Bunny 3, so publisher confirms
still fail on a returned mandatory message.

Verified against RabbitMQ 4.3.6: a confirm_select publish is delivered
with its properties intact, and a mandatory publish to an unrouted key
raises Rabbit::MessageNotDelivered.

Ruby 3.1 is dropped from the CI matrix for the same reason.

* Fix NoMethodError when headers is explicitly nil

Since 1.8.0 the constructor reads `headers.with_indifferent_access` to
pick up the `compress` flag. The keyword defaults to `{}`, but callers
that pass an explicit `nil` — table_sync's `Publishing::Raw` does, since
it forwards `attributes[:headers]` unconditionally — hit a NoMethodError
on every publish.

* Do not overwrite a queue the subclass already assigned

Since 1.9.0 `inherited` copies the parent queue onto every subclass
unconditionally. A subclass that assigns its own queue from its own
`inherited` hook, before calling `super`, has it silently replaced by the
parent's, and its jobs fall back to the default queue.

Using `||=` keeps the intent of the original change — a subclass without
a queue of its own still inherits the parent's, since its queue is nil at
that point — while leaving an explicitly assigned one alone.

* Retry publishing when Bunny 3 closes the channel on reconnect

Since Bunny 3.1 `Session#handle_network_failure` calls `connection_closed!`
on every channel as soon as it detects a dropped connection, so pooled
channels sit in `:closed` until recovery reopens them.

On 2.x a channel stayed `:open`, the publish reached `send_frameset` and
raised `ConnectionClosedError`... (continued)

91 of 114 branches covered (79.82%)

Branch coverage included in aggregate %.

49 of 51 new or added lines in 4 files covered. (96.08%)

511 of 536 relevant lines covered (95.34%)

13.71 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
90.36
-0.71% lib/rabbit/publishing.rb
Jobs
ID Job ID Ran Files Coverage
1 35981731501.1 24 Sep 2026 09:32AM UTC 20
92.62
GitHub Action Run
Source Files on build 35981731501
  • Tree
  • List 20
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • a5b79b54 on github
  • Prev Build on master (#24829728043)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc