ears 0.24.0 → 0.26.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb14b9ea691e7c7161be693c96c6d6290da592be3c369acef5dab1b9e52f5cf5
4
- data.tar.gz: 2383344432fd4124b3da7c0198050ea26e769764a931612ec58c01de14c93951
3
+ metadata.gz: 565ce26dac7f697372fa56fedccaffd5fe052a63a0d0a8dfe3fbc18dc47e4cc1
4
+ data.tar.gz: 6f7614f9e37a7ef7f345dff81afd1b3cf000cd8932754dc334d8bc9176d4b81a
5
5
  SHA512:
6
- metadata.gz: 54adea3a1dfdb3913864257b55d0a8d7a785da918da135ffe119606862591bbbb3afca40d6d152581a0d8756f80acd69c81a1daeac24e61727b270dadb121555
7
- data.tar.gz: 9cbd63bfeea67f04711b0fdbcdfc30d7cd430dde5f17008a92746eff15a516efb7a761f85cda9d9690ca32b8755b4a08281b6b430e6ba276f9a4e4621a487965
6
+ metadata.gz: 4d87660bc077d60418c53516a7402ac37f99fc53f8ffbe6cb61fba53b7742188b8feb1d996f47ebb069809e486887cdcc4677ba9480a66ccaa007ba6365863f0
7
+ data.tar.gz: 8cc38a72a9b0ed674a5e1af38327389af6f34b20589dc4c0ec63853f4bf27050f1233b2ad66ca29db054a2d249a4df00c8a1cc68e3fdca9686a7651a8d2cac8d
@@ -1,10 +1,20 @@
1
- # Specify a different separator for branch names
2
-
3
1
  version: 2
4
- updates:
5
- - package-ecosystem: 'github-actions'
6
- directory: '/'
2
+
3
+ multi-ecosystem-groups:
4
+ security:
7
5
  schedule:
8
- interval: 'weekly'
6
+ interval: 'daily'
7
+ open-pull-requests-limit: 0 # disables version-update PRs; security PRs unaffected
9
8
  pull-request-branch-name:
10
9
  separator: '-'
10
+
11
+ updates:
12
+ - package-ecosystem: 'bundler'
13
+ directory: '/'
14
+ patterns: ['*']
15
+ multi-ecosystem-group: 'security'
16
+
17
+ - package-ecosystem: 'github-actions'
18
+ directory: '/'
19
+ patterns: ['*']
20
+ multi-ecosystem-group: 'security'
@@ -12,7 +12,7 @@ jobs:
12
12
  runs-on: ubuntu-latest
13
13
  strategy:
14
14
  matrix:
15
- ruby-version: ['3.2', '3.3', '3.4']
15
+ ruby-version: ['3.3', '3.4', '4.0']
16
16
 
17
17
  steps:
18
18
  - uses: actions/checkout@v6
@@ -17,4 +17,4 @@ jobs:
17
17
  - name: 'Checkout Repository'
18
18
  uses: actions/checkout@v6
19
19
  - name: 'Dependency Review'
20
- uses: actions/dependency-review-action@v4
20
+ uses: actions/dependency-review-action@v5
data/.rubocop.yml CHANGED
@@ -13,7 +13,7 @@ AllCops:
13
13
  - Guardfile
14
14
  - bin/*
15
15
  - tmp/**/*
16
- TargetRubyVersion: 3.2
16
+ TargetRubyVersion: 3.3
17
17
  NewCops: enable
18
18
 
19
19
  Style:
data/.tool-versions CHANGED
@@ -1,2 +1,2 @@
1
- ruby 3.2.9
2
- nodejs 24.8.0
1
+ ruby 4.0.5
2
+ nodejs 24.16.0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.26.0 (2026-06-01)
4
+
5
+ - Upgrade `connection_pool` dependency to `~> 3.0`
6
+ - Drop support for Ruby 3.2 (end-of-life); require Ruby `>= 3.3.0`
7
+
8
+ ## 0.25.0 (2026-04-08)
9
+
10
+ - Drop support for bunny versions below 3.0.0
11
+ - Fix publisher mock to stub `record_exchange` on `Bunny::Channel`
12
+
3
13
  ## 0.24.0 (2025-12-18)
4
14
 
5
15
  - Replace `MultiJson` in `Ears::Middlewares::JSON` with `JSON`
data/CLAUDE.md ADDED
@@ -0,0 +1,80 @@
1
+ # ears
2
+
3
+ Ruby gem for building RabbitMQ consumers using Bunny.
4
+
5
+ ## Stack
6
+
7
+ - **Ruby** 4.0.x (see `.tool-versions`)
8
+ - **Bunny** >= 3.0.0 — AMQP client
9
+ - **connection_pool** ~> 3.0 — thread-safe channel pools for publishers
10
+ - **json** >= 2.9.0 — JSON serialization in middleware
11
+ - Dev tools: RSpec, RuboCop (rubocop-rspec, rubocop-rake), SimpleCov, YARD, Prettier (via Node)
12
+
13
+ ## Common Commands
14
+
15
+ ```bash
16
+ # Install deps
17
+ bundle install
18
+ npm install
19
+
20
+ # Tests
21
+ bundle exec rspec
22
+
23
+ # Lint / format
24
+ bundle exec rubocop
25
+ npm run lint # Prettier on Ruby files
26
+
27
+ # Autofix rubocop
28
+ bundle exec rubocop -A
29
+
30
+ # Docs
31
+ bundle exec yard doc
32
+ ```
33
+
34
+ ## Directory Layout
35
+
36
+ ```
37
+ lib/
38
+ ears.rb # Top-level module: configure, connection, channel, setup, run!
39
+ ears/
40
+ configuration.rb # Ears::Configuration — all tunable constants
41
+ errors.rb # Custom error classes (required by configuration.rb)
42
+ consumer.rb # Abstract base class; subclass and override #work
43
+ consumer_wrapper.rb # Wraps a Consumer for Bunny delivery callbacks
44
+ setup.rb # Ears::Setup — DSL for exchange/queue/consumer wiring
45
+ publisher.rb # Ears::Publisher — publish and publish_with_confirmation
46
+ publisher_channel_pool.rb # Thread-safe ConnectionPool for publisher channels
47
+ publisher_confirmation_handler.rb
48
+ publisher_retry_handler.rb
49
+ middleware.rb # Middleware base
50
+ middlewares/
51
+ appsignal.rb
52
+ json.rb # Deserializes JSON payload before #work
53
+ max_retries.rb
54
+ testing.rb # Ears::Testing module entry-point
55
+ testing/
56
+ matchers.rb
57
+ message_capture.rb
58
+ publisher_mock.rb
59
+ test_helper.rb
60
+ spec/ # RSpec specs (mirrors lib/ structure)
61
+ ```
62
+
63
+ ## Architecture
64
+
65
+ **Consumer pattern:** Subclass `Ears::Consumer`, call `.configure(queue:, exchange:, routing_keys:, ...)` in the class body, override `#work(delivery_info, metadata, payload)` returning `:ack`, `:reject`, or `:requeue`. Middleware chain is applied in reverse order around `#work`.
66
+
67
+ **Publisher pattern:** Instantiate `Ears::Publisher.new(exchange_name)`, call `#publish(data, routing_key:)` or `#publish_with_confirmation(data, routing_key:)`. Internally uses `PublisherChannelPool` (two `ConnectionPool` instances — one standard, one with confirms). Pool is lazy-initialised with a mutex for thread safety and is fork-safe (resets on PID change).
68
+
69
+ **Setup DSL:** `Ears.setup { exchange(...); queue(...); consumer(...) }` or `Ears.setup_consumers(*classes)` which auto-wires from each class's `.configure` metadata.
70
+
71
+ **Configuration knobs** (set via `Ears.configure { |c| c.foo = ... }`): `rabbitmq_url`, `connection_name` (required), `publisher_pool_size` (32), `publisher_pool_timeout` (2s), `publisher_confirms_pool_size` (32), `publisher_confirms_timeout` (5s), plus retry/backoff params.
72
+
73
+ ## Testing Support
74
+
75
+ `require 'ears/testing'` — provides `Ears::Testing::TestHelper` (RSpec include), `PublisherMock`, `MessageCapture`, and custom matchers (`have_been_published`).
76
+
77
+ ## Known Tech Debt
78
+
79
+ - `Metrics/MethodLength` is suppressed for `Configuration#initialize` (initialises ~15 instance variables from constants; an options-hash refactor would be the real fix).
80
+ - `.rubocop_todo.yml` may have lingering entries — check before adding new inline disables.
data/Gemfile.lock CHANGED
@@ -1,86 +1,86 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ears (0.24.0)
5
- bunny (>= 2.22.0)
6
- connection_pool (~> 2.4)
4
+ ears (0.26.0)
5
+ bunny (>= 3.0.0)
6
+ connection_pool (~> 3.0)
7
7
  json (>= 2.9.0)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- amq-protocol (2.3.4)
12
+ amq-protocol (2.8.0)
13
13
  ast (2.4.3)
14
- bunny (2.24.0)
15
- amq-protocol (~> 2.3)
14
+ bunny (3.1.0)
15
+ amq-protocol (~> 2.7)
16
+ logger (~> 1, >= 1.7)
16
17
  sorted_set (~> 1, >= 1.0.2)
17
- connection_pool (2.5.4)
18
+ connection_pool (3.0.2)
18
19
  diff-lcs (1.6.2)
19
20
  docile (1.4.1)
20
- json (2.13.2)
21
+ json (2.19.7)
21
22
  language_server-protocol (3.17.0.5)
22
23
  lint_roller (1.1.0)
23
- parallel (1.27.0)
24
- parser (3.3.9.0)
24
+ logger (1.7.0)
25
+ parallel (2.1.0)
26
+ parser (3.3.11.1)
25
27
  ast (~> 2.4.1)
26
28
  racc
27
29
  prettier_print (1.2.1)
28
- prism (1.5.1)
30
+ prism (1.9.0)
29
31
  racc (1.8.1)
30
32
  rainbow (3.1.1)
31
- rake (13.3.0)
33
+ rake (13.4.2)
32
34
  rbtree (0.4.6)
33
- regexp_parser (2.11.3)
34
- rspec (3.13.1)
35
+ regexp_parser (2.12.0)
36
+ rspec (3.13.2)
35
37
  rspec-core (~> 3.13.0)
36
38
  rspec-expectations (~> 3.13.0)
37
39
  rspec-mocks (~> 3.13.0)
38
- rspec-core (3.13.5)
40
+ rspec-core (3.13.6)
39
41
  rspec-support (~> 3.13.0)
40
42
  rspec-expectations (3.13.5)
41
43
  diff-lcs (>= 1.2.0, < 2.0)
42
44
  rspec-support (~> 3.13.0)
43
- rspec-mocks (3.13.5)
45
+ rspec-mocks (3.13.8)
44
46
  diff-lcs (>= 1.2.0, < 2.0)
45
47
  rspec-support (~> 3.13.0)
46
- rspec-support (3.13.5)
47
- rubocop (1.80.2)
48
+ rspec-support (3.13.7)
49
+ rubocop (1.87.0)
48
50
  json (~> 2.3)
49
51
  language_server-protocol (~> 3.17.0.2)
50
52
  lint_roller (~> 1.1.0)
51
- parallel (~> 1.10)
53
+ parallel (>= 1.10)
52
54
  parser (>= 3.3.0.2)
53
55
  rainbow (>= 2.2.2, < 4.0)
54
56
  regexp_parser (>= 2.9.3, < 3.0)
55
- rubocop-ast (>= 1.46.0, < 2.0)
57
+ rubocop-ast (>= 1.49.0, < 2.0)
56
58
  ruby-progressbar (~> 1.7)
57
59
  unicode-display_width (>= 2.4.0, < 4.0)
58
- rubocop-ast (1.46.0)
60
+ rubocop-ast (1.49.1)
59
61
  parser (>= 3.3.7.2)
60
- prism (~> 1.4)
62
+ prism (~> 1.7)
61
63
  rubocop-rake (0.7.1)
62
64
  lint_roller (~> 1.1)
63
65
  rubocop (>= 1.72.1)
64
- rubocop-rspec (3.7.0)
66
+ rubocop-rspec (3.9.0)
65
67
  lint_roller (~> 1.1)
66
- rubocop (~> 1.72, >= 1.72.1)
68
+ rubocop (~> 1.81)
67
69
  ruby-progressbar (1.13.0)
68
- set (1.1.2)
69
70
  simplecov (0.22.0)
70
71
  docile (~> 1.1)
71
72
  simplecov-html (~> 0.11)
72
73
  simplecov_json_formatter (~> 0.1)
73
74
  simplecov-html (0.13.2)
74
75
  simplecov_json_formatter (0.1.4)
75
- sorted_set (1.0.3)
76
+ sorted_set (1.1.0)
76
77
  rbtree
77
- set (~> 1.0)
78
78
  syntax_tree (6.3.0)
79
79
  prettier_print (>= 1.2.0)
80
80
  unicode-display_width (3.2.0)
81
81
  unicode-emoji (~> 4.1)
82
- unicode-emoji (4.1.0)
83
- yard (0.9.37)
82
+ unicode-emoji (4.2.0)
83
+ yard (0.9.44)
84
84
 
85
85
  PLATFORMS
86
86
  arm64-darwin
@@ -100,44 +100,45 @@ DEPENDENCIES
100
100
  yard
101
101
 
102
102
  CHECKSUMS
103
- amq-protocol (2.3.4) sha256=98be5b9244e28dc66acc8351a254dbf45d996c5a0b7d49ab3ff8b72b0d2e6308
103
+ amq-protocol (2.8.0) sha256=d06bbb341fa683459954f5a854388dac729171500116d81311cfbeaad83392ab
104
104
  ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
105
- bunny (2.24.0) sha256=072fe4ae98eaa9c95a17e4d166204f710bba8a9a7070b73a8c3b023f439d1682
106
- connection_pool (2.5.4) sha256=e9e1922327416091f3f6542f5f4446c2a20745276b9aa796dd0bb2fd0ea1e70a
105
+ bundler (4.0.12) sha256=7f8b757d28dfb636e7b24fba2344ac6dd13b5b24f4b46d62573d483f211825ac
106
+ bunny (3.1.0) sha256=fd09ea8be3fbb7fe4b1063f874094b444f762f2da1692b3341751af7c6d62f3c
107
+ connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a
107
108
  diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
108
109
  docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e
109
- ears (0.24.0)
110
- json (2.13.2) sha256=02e1f118d434c6b230a64ffa5c8dee07e3ec96244335c392eaed39e1199dbb68
110
+ ears (0.26.0)
111
+ json (2.19.7) sha256=fe432c8639f6efff69f9d73b518a3705d9581ab93156f981ea72806e1e5bcc3e
111
112
  language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
112
113
  lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
113
- parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130
114
- parser (3.3.9.0) sha256=94d6929354b1a6e3e1f89d79d4d302cc8f5aa814431a6c9c7e0623335d7687f2
114
+ logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
115
+ parallel (2.1.0) sha256=b35258865c2e31134c5ecb708beaaf6772adf9d5efae28e93e99260877b09356
116
+ parser (3.3.11.1) sha256=d17ace7aabe3e72c3cc94043714be27cc6f852f104d81aa284c2281aecc65d54
115
117
  prettier_print (1.2.1) sha256=a72838b5f23facff21f90a5423cdcdda19e4271092b41f4ea7f50b83929e6ff9
116
- prism (1.5.1) sha256=b40c1b76ccb9fcccc3d1553967cda6e79fa7274d8bfea0d98b15d27a6d187134
118
+ prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
117
119
  racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
118
120
  rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
119
- rake (13.3.0) sha256=96f5092d786ff412c62fde76f793cc0541bd84d2eb579caa529aa8a059934493
121
+ rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
120
122
  rbtree (0.4.6) sha256=14eea4469b24fd2472542e5f3eb105d6344c8ccf36f0b56d55fdcfeb4e0f10fc
121
- regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4
122
- rspec (3.13.1) sha256=b9f9a58fa915b8d94a1d6b3195fe6dd28c4c34836a6097015142c4a9ace72140
123
- rspec-core (3.13.5) sha256=ab3f682897c6131c67f9a17cfee5022a597f283aebe654d329a565f9937a4fa3
123
+ regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb
124
+ rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587
125
+ rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
124
126
  rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
125
- rspec-mocks (3.13.5) sha256=e4338a6f285ada9fe56f5893f5457783af8194f5d08884d17a87321d5195ea81
126
- rspec-support (3.13.5) sha256=add745af535dd14b18f1209ab41ef987fdfad12786176b6a3b3619b9a7279fbf
127
- rubocop (1.80.2) sha256=6485f30fefcf5c199db3b91e5e253b1ef43f7e564784e2315255809a3dd9abf4
128
- rubocop-ast (1.46.0) sha256=0da7f6ad5b98614f89b74f11873c191059c823eae07d6ffd40a42a3338f2232b
127
+ rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47
128
+ rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
129
+ rubocop (1.87.0) sha256=b9d9ddf55116a513f8ef2c7ae660662d8b49301f118d3f0df61865b33a5c188d
130
+ rubocop-ast (1.49.1) sha256=4412f3ee70f6fe4546cc489548e0f6fcf76cafcfa80fa03af67098ffed755035
129
131
  rubocop-rake (0.7.1) sha256=3797f2b6810c3e9df7376c26d5f44f3475eda59eb1adc38e6f62ecf027cbae4d
130
- rubocop-rspec (3.7.0) sha256=b7b214da112034db9c6d00f2d811a354847e870f7b6ed2482b29649c3d42058f
132
+ rubocop-rspec (3.9.0) sha256=8fa70a3619408237d789aeecfb9beef40576acc855173e60939d63332fdb55e2
131
133
  ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
132
- set (1.1.2) sha256=ca33a60d202e788041d94a5d4c12315b1639875576f1a266f3a10913646d8ef1
133
134
  simplecov (0.22.0) sha256=fe2622c7834ff23b98066bb0a854284b2729a569ac659f82621fc22ef36213a5
134
135
  simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246
135
136
  simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428
136
- sorted_set (1.0.3) sha256=4f2b8bee6e8c59cbd296228c0f1f81679357177a8b6859dcc2a99e86cce6372f
137
+ sorted_set (1.1.0) sha256=bac01eb16b6bcfcdb7d732a28e87422be8b5c9fdcfeadbe9072682407524ee83
137
138
  syntax_tree (6.3.0) sha256=56e25a9692c798ec94c5442fe94c5e94af76bef91edc8bb02052cbdecf35f13d
138
139
  unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
139
- unicode-emoji (4.1.0) sha256=4997d2d5df1ed4252f4830a9b6e86f932e2013fbff2182a9ce9ccabda4f325a5
140
- yard (0.9.37) sha256=a6e910399e78e613f80ba9add9ba7c394b1a935f083cccbef82903a3d2a26992
140
+ unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
141
+ yard (0.9.44) sha256=eb087e9b631ccd887b049f303d489963945452d5e2a7eb49a5a74a7cf6887f28
141
142
 
142
143
  BUNDLED WITH
143
- 2.7.2
144
+ 4.0.12
data/ears.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.description = 'A gem for building RabbitMQ consumers.'
11
11
  spec.homepage = 'https://github.com/ivx/ears'
12
12
  spec.license = 'MIT'
13
- spec.required_ruby_version = Gem::Requirement.new('>= 3.2.9')
13
+ spec.required_ruby_version = Gem::Requirement.new('>= 3.3.0')
14
14
 
15
15
  spec.metadata['allowed_push_host'] = 'https://rubygems.org'
16
16
 
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
33
  spec.require_paths = ['lib']
34
34
 
35
- spec.add_dependency 'bunny', '>= 2.22.0'
36
- spec.add_dependency 'connection_pool', '~> 2.4'
35
+ spec.add_dependency 'bunny', '>= 3.0.0'
36
+ spec.add_dependency 'connection_pool', '~> 3.0'
37
37
  spec.add_dependency 'json', '>= 2.9.0'
38
38
  end
@@ -53,6 +53,7 @@ module Ears
53
53
 
54
54
  def setup_register_exchange(channel)
55
55
  allow(channel).to receive(:register_exchange)
56
+ allow(channel).to receive(:record_exchange)
56
57
  end
57
58
 
58
59
  def setup_basic_publish(channel)
data/lib/ears/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ears
2
- VERSION = '0.24.0'
2
+ VERSION = '0.26.0'
3
3
  end
data/package-lock.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "devDependencies": {
9
9
  "@invisionag/prettier-config": "^2.1.3",
10
10
  "@prettier/plugin-ruby": "^4.0.4",
11
- "prettier": "^3.6.2"
11
+ "prettier": "^3.8.3"
12
12
  }
13
13
  },
14
14
  "node_modules/@invisionag/prettier-config": {
@@ -30,9 +30,9 @@
30
30
  }
31
31
  },
32
32
  "node_modules/prettier": {
33
- "version": "3.6.2",
34
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
35
- "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
33
+ "version": "3.8.3",
34
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz",
35
+ "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==",
36
36
  "dev": true,
37
37
  "license": "MIT",
38
38
  "bin": {
@@ -62,9 +62,9 @@
62
62
  "requires": {}
63
63
  },
64
64
  "prettier": {
65
- "version": "3.6.2",
66
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
67
- "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
65
+ "version": "3.8.3",
66
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz",
67
+ "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==",
68
68
  "dev": true
69
69
  }
70
70
  }
data/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "devDependencies": {
10
10
  "@invisionag/prettier-config": "^2.1.3",
11
11
  "@prettier/plugin-ruby": "^4.0.4",
12
- "prettier": "^3.6.2"
12
+ "prettier": "^3.8.3"
13
13
  },
14
14
  "prettier": "@invisionag/prettier-config/ruby"
15
15
  }
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ears
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.24.0
4
+ version: 0.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - InVision AG
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2025-12-18 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bunny
@@ -16,28 +15,28 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: 2.22.0
18
+ version: 3.0.0
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: 2.22.0
25
+ version: 3.0.0
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: connection_pool
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - "~>"
32
31
  - !ruby/object:Gem::Version
33
- version: '2.4'
32
+ version: '3.0'
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - "~>"
39
38
  - !ruby/object:Gem::Version
40
- version: '2.4'
39
+ version: '3.0'
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: json
43
42
  requirement: !ruby/object:Gem::Requirement
@@ -70,6 +69,7 @@ files:
70
69
  - ".tool-versions"
71
70
  - ".yardopts"
72
71
  - CHANGELOG.md
72
+ - CLAUDE.md
73
73
  - CODEOWNERS
74
74
  - CODE_OF_CONDUCT.md
75
75
  - Gemfile
@@ -109,7 +109,6 @@ metadata:
109
109
  homepage_uri: https://github.com/ivx/ears
110
110
  source_code_uri: https://github.com/ivx/ears
111
111
  changelog_uri: https://github.com/ivx/ears/blob/main/CHANGELOG.md
112
- post_install_message:
113
112
  rdoc_options: []
114
113
  require_paths:
115
114
  - lib
@@ -117,15 +116,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
117
116
  requirements:
118
117
  - - ">="
119
118
  - !ruby/object:Gem::Version
120
- version: 3.2.9
119
+ version: 3.3.0
121
120
  required_rubygems_version: !ruby/object:Gem::Requirement
122
121
  requirements:
123
122
  - - ">="
124
123
  - !ruby/object:Gem::Version
125
124
  version: '0'
126
125
  requirements: []
127
- rubygems_version: 3.4.19
128
- signing_key:
126
+ rubygems_version: 4.0.10
129
127
  specification_version: 4
130
128
  summary: A gem for building RabbitMQ consumers.
131
129
  test_files: []