waterdrop 2.0.7 → 2.6.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.github/FUNDING.yml +1 -0
  4. data/.github/workflows/ci.yml +39 -13
  5. data/.ruby-version +1 -1
  6. data/CHANGELOG.md +212 -0
  7. data/Gemfile +0 -2
  8. data/Gemfile.lock +45 -75
  9. data/README.md +22 -275
  10. data/certs/cert_chain.pem +26 -0
  11. data/config/locales/errors.yml +39 -0
  12. data/docker-compose.yml +21 -12
  13. data/lib/waterdrop/clients/buffered.rb +95 -0
  14. data/lib/waterdrop/clients/dummy.rb +69 -0
  15. data/lib/waterdrop/clients/rdkafka.rb +34 -0
  16. data/lib/{water_drop → waterdrop}/config.rb +39 -16
  17. data/lib/waterdrop/contracts/config.rb +43 -0
  18. data/lib/waterdrop/contracts/message.rb +64 -0
  19. data/lib/waterdrop/contracts/transactional_offset.rb +21 -0
  20. data/lib/{water_drop → waterdrop}/errors.rb +23 -7
  21. data/lib/waterdrop/helpers/counter.rb +27 -0
  22. data/lib/waterdrop/instrumentation/callbacks/delivery.rb +106 -0
  23. data/lib/{water_drop → waterdrop}/instrumentation/callbacks/error.rb +6 -2
  24. data/lib/{water_drop → waterdrop}/instrumentation/callbacks/statistics.rb +1 -1
  25. data/lib/{water_drop/instrumentation/stdout_listener.rb → waterdrop/instrumentation/logger_listener.rb} +91 -21
  26. data/lib/waterdrop/instrumentation/monitor.rb +20 -0
  27. data/lib/{water_drop/instrumentation/monitor.rb → waterdrop/instrumentation/notifications.rb} +15 -14
  28. data/lib/waterdrop/instrumentation/vendors/datadog/dashboard.json +1 -0
  29. data/lib/waterdrop/instrumentation/vendors/datadog/metrics_listener.rb +210 -0
  30. data/lib/waterdrop/middleware.rb +50 -0
  31. data/lib/{water_drop → waterdrop}/producer/async.rb +40 -4
  32. data/lib/{water_drop → waterdrop}/producer/buffer.rb +13 -31
  33. data/lib/{water_drop → waterdrop}/producer/builder.rb +6 -11
  34. data/lib/{water_drop → waterdrop}/producer/sync.rb +44 -15
  35. data/lib/waterdrop/producer/transactions.rb +219 -0
  36. data/lib/waterdrop/producer.rb +324 -0
  37. data/lib/{water_drop → waterdrop}/version.rb +1 -1
  38. data/lib/waterdrop.rb +27 -2
  39. data/renovate.json +6 -0
  40. data/waterdrop.gemspec +14 -11
  41. data.tar.gz.sig +0 -0
  42. metadata +73 -111
  43. metadata.gz.sig +0 -0
  44. data/certs/mensfeld.pem +0 -25
  45. data/config/errors.yml +0 -6
  46. data/lib/water_drop/contracts/config.rb +0 -26
  47. data/lib/water_drop/contracts/message.rb +0 -42
  48. data/lib/water_drop/instrumentation/callbacks/delivery.rb +0 -30
  49. data/lib/water_drop/instrumentation/callbacks/statistics_decorator.rb +0 -77
  50. data/lib/water_drop/instrumentation/callbacks_manager.rb +0 -39
  51. data/lib/water_drop/instrumentation.rb +0 -20
  52. data/lib/water_drop/patches/rdkafka/bindings.rb +0 -42
  53. data/lib/water_drop/patches/rdkafka/producer.rb +0 -20
  54. data/lib/water_drop/producer/dummy_client.rb +0 -32
  55. data/lib/water_drop/producer.rb +0 -162
  56. data/lib/water_drop.rb +0 -36
  57. /data/lib/{water_drop → waterdrop}/contracts.rb +0 -0
  58. /data/lib/{water_drop → waterdrop}/producer/status.rb +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 261d7b8295e2e1b3a6b9658d4409dc58ff8c336e8e5d6064e80d92c8e3215bbe
4
- data.tar.gz: f67bad60fe2cd37ac1658533ceec0daa1ec9ab527bb022da7f1cc40ccde89088
3
+ metadata.gz: 24dc1ffc8d6298980ec8f0c302141a643196acbf62da017cf03ec6675552532c
4
+ data.tar.gz: '08b66f7abb7f2e04fb9a9b5da566f5cefb5a00769ef14c14898f86c07003f81e'
5
5
  SHA512:
6
- metadata.gz: e0529057c22d4b76c61f788f038e8fb024785aa3a2c89c266cfe2b50d1f2b44e8a96e16ca626f62e721d4ae48fe4afac7113e32e5cd5ccbc5e7adf36aa0558af
7
- data.tar.gz: 31241cad722c315aefab9d4ad2613908f053bf3c905779e8fe5c6f1975fbc866b34526442386c1faec2e2386d5f5332c4b7e80a326aa8aca9b8ab1b94e51d572
6
+ metadata.gz: 65d1a0b2ce58fa07edfa96dffaa97773424a53787ee05ba981ca1ed9e4edb91d7f9b25e4dbc5e054ac68abf288dd5e1a879cb09ee13fcacc9422d9a341f4bd81
7
+ data.tar.gz: 2c7ce204ab9c9af43c5e916143aa5375e45157f1fd9c34acf69dc3191a646c3d41c230af82f6d1b8047836f2b7d4437d9a2cf3c173cd8beb9a7c1948c652cd54
checksums.yaml.gz.sig CHANGED
Binary file
@@ -0,0 +1 @@
1
+ custom: ['https://karafka.io/#become-pro']
@@ -1,5 +1,9 @@
1
1
  name: ci
2
2
 
3
+ concurrency:
4
+ group: ${{ github.workflow }}-${{ github.ref }}
5
+ cancel-in-progress: true
6
+
3
7
  on:
4
8
  pull_request:
5
9
  push:
@@ -14,35 +18,57 @@ jobs:
14
18
  fail-fast: false
15
19
  matrix:
16
20
  ruby:
21
+ - '3.3'
22
+ - '3.2'
23
+ - '3.1'
17
24
  - '3.0'
18
25
  - '2.7'
19
- - '2.6'
20
- - 'jruby-9.3.1.0'
21
26
  include:
22
- - ruby: '3.0'
27
+ - ruby: '3.3'
23
28
  coverage: 'true'
24
29
  steps:
25
- - uses: actions/checkout@v2
30
+ - uses: actions/checkout@v4
31
+
26
32
  - name: Install package dependencies
27
33
  run: "[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS"
34
+
28
35
  - name: Set up Ruby
29
36
  uses: ruby/setup-ruby@v1
30
37
  with:
31
38
  ruby-version: ${{matrix.ruby}}
39
+ bundler-cache: true
40
+ bundler: 'latest'
41
+
32
42
  - name: Run Kafka with docker-compose
33
- # We need to give Kafka enough time to start and create all the needed topics, etc
34
- # If anyone has a better idea on how to do it smart and easily, please contact me
35
43
  run: |
36
- docker-compose up -d
37
- sleep 5
44
+ docker-compose up -d || (sleep 5 && docker-compose up -d)
45
+
46
+ - name: Wait for Kafka
47
+ run: |
48
+ sleep 15
49
+
38
50
  - name: Install latest bundler
39
51
  run: |
40
- gem install bundler --no-document
52
+ if [[ "$(ruby -v | awk '{print $2}')" == 2.7.8* ]]; then
53
+ gem install bundler -v 2.4.22 --no-document
54
+ gem update --system 3.4.22 --no-document
55
+ else
56
+ gem install bundler --no-document
57
+ gem update --system --no-document
58
+ fi
59
+
41
60
  bundle config set without 'tools benchmarks docs'
61
+
42
62
  - name: Bundle install
43
63
  run: |
44
64
  bundle config set without development
45
- bundle install --jobs 4 --retry 3
65
+
66
+ if [[ "$(ruby -v | awk '{print $2}')" == 2.7.8* ]]; then
67
+ BUNDLER_VERSION=2.4.22 bundle install --jobs 4 --retry 3
68
+ else
69
+ bundle install --jobs 4 --retry 3
70
+ fi
71
+
46
72
  - name: Run all tests
47
73
  env:
48
74
  GITHUB_COVERAGE: ${{matrix.coverage}}
@@ -53,13 +79,13 @@ jobs:
53
79
  strategy:
54
80
  fail-fast: false
55
81
  steps:
56
- - uses: actions/checkout@v2
82
+ - uses: actions/checkout@v4
57
83
  with:
58
84
  fetch-depth: 0
59
85
  - name: Set up Ruby
60
86
  uses: ruby/setup-ruby@v1
61
87
  with:
62
- ruby-version: 3.0
88
+ ruby-version: 3.3
63
89
  - name: Install latest bundler
64
90
  run: gem install bundler --no-document
65
91
  - name: Install Diffend plugin
@@ -72,7 +98,7 @@ jobs:
72
98
  strategy:
73
99
  fail-fast: false
74
100
  steps:
75
- - uses: actions/checkout@v2
101
+ - uses: actions/checkout@v4
76
102
  with:
77
103
  fetch-depth: 0
78
104
  - name: Run Coditsu
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.0.2
1
+ 3.3.0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,217 @@
1
1
  # WaterDrop changelog
2
2
 
3
+ ## 2.6.14 (2024-02-06)
4
+ - [Enhancement] Instrument `producer.connected` and `producer.closing` lifecycle events.
5
+
6
+ ## 2.6.13 (2024-01-29)
7
+ - [Enhancement] Expose `#partition_count` for building custom partitioners that need to be aware of number of partitions on a given topic.
8
+
9
+ ## 2.6.12 (2024-01-03)
10
+ - [Enhancement] Provide ability to label message dispatches for increased observability.
11
+ - [Enhancement] Provide ability to commit offset during the transaction with a consumer provided.
12
+ - [Change] Change transactional message purged error type from `message.error` to `librdkafka.dispatch_error` to align with the non-transactional error type.
13
+ - [Change] Remove usage of concurrent ruby.
14
+
15
+ ## 2.6.11 (2023-10-25)
16
+ - [Enhancement] Return delivery handles and delivery report for both dummy and buffered clients with proper topics, partitions and offsets assign and auto-increment offsets per partition.
17
+ - [Fix] Fix a case where buffered test client would not accumulate messages on failed transactions
18
+
19
+ ## 2.6.10 (2023-10-24)
20
+ - [Improvement] Introduce `message.purged` event to indicate that a message that was not delivered to Kafka was purged. This most of the time refers to messages that were part of a transaction and were not yet dispatched to Kafka. It always means, that given message was not delivered but in case of transactions it is expected. In case of non-transactional it usually means `#purge` usage or exceeding `message.timeout.ms` so `librdkafka` removes this message from its internal queue. Non-transactional producers do **not** use this and pipe purges to `error.occurred`.
21
+ - [Fix] Fix a case where `message.acknowledged` would not have `caller` key.
22
+ - [Fix] Fix a bug where critical errors (like `IRB::Abort`) would not abort the ongoing transaction.
23
+
24
+ ## 2.6.9 (2023-10-23)
25
+ - [Improvement] Introduce a `transaction.finished` event to indicate that transaction has finished whether it was aborted or committed.
26
+ - [Improvement] Use `transaction.committed` event to indicate that transaction has been committed.
27
+
28
+ ## 2.6.8 (2023-10-20)
29
+ - **[Feature]** Introduce transactions support.
30
+ - [Improvement] Expand `LoggerListener` to inform about transactions (info level).
31
+ - [Improvement] Allow waterdrop to use topic as a symbol or a string.
32
+ - [Improvement] Enhance both `message.acknowledged` and `error.occurred` (for `librdkafka.dispatch_error`) with full delivery_report.
33
+ - [Improvement] Provide `#close!` that will force producer close even with outgoing data after the ma wait timeout.
34
+ - [Improvement] Provide `#purge` that will purge any outgoing data and data from the internal queues (both WaterDrop and librdkafka).
35
+ - [Fix] Fix the `librdkafka.dispatch_error` error dispatch for errors with negative code.
36
+
37
+ ## 2.6.7 (2023-09-01)
38
+ - [Improvement] early flush data from `librdkafka` internal buffer before closing.
39
+ - [Maintenance] Update the signing cert as the old one expired.
40
+
41
+ ## 2.6.6 (2023-08-03)
42
+ - [Improvement] Provide `log_messages` option to `LoggerListener` so the extensive messages data logging can disabled.
43
+
44
+ ## 2.6.5 (2023-07-22)
45
+ - [Fix] Add cause to the errors that are passed into instrumentation (konalegi)
46
+
47
+ ## 2.6.4 (2023-07-11)
48
+ - [Improvement] Use original error `#inspect` for `WaterDrop::Errors::ProduceError` and `WaterDrop::Errors::ProduceManyError` instead of the current empty string.
49
+
50
+ ## 2.6.3 (2023-06-28)
51
+ - [Change] Use `Concurrent::AtomicFixnum` to track operations in progress to prevent potential race conditions on JRuby and TruffleRuby (not yet supported but this is for future usage).
52
+ - [Change] Require `karafka-rdkafka` `>= 0.13.2`.
53
+ - [Change] Require 'karafka-core' `>= 2.1.1`
54
+
55
+ ## 2.6.2 (2023-06-21)
56
+ - [Refactor] Introduce a counter-based locking approach to make sure, that we close the producer safely but at the same time not to limit messages production with producing lock.
57
+ - [Refactor] Make private methods private.
58
+ - [Refactor] Validate that producer is not closed only when attempting to produce.
59
+ - [Refactor] Improve one 5 minute long spec to run in 10 seconds.
60
+ - [Refactor] clear client assignment after closing.
61
+
62
+ ## 2.6.1 (2023-06-19)
63
+ - [Refactor] Remove no longer needed patches.
64
+ - [Fix] Fork detection on a short lived processes seems to fail. Clear the used parent process client reference not to close it in the finalizer (#356).
65
+ - [Change] Require `karafka-rdkafka` `>= 0.13.0`.
66
+ - [Change] Require 'karafka-core' `>= 2.1.0`
67
+
68
+ ## 2.6.0 (2023-06-11)
69
+ - [Improvement] Introduce `client_class` setting for ability to replace underlying client with anything specific to a given env (dev, test, etc).
70
+ - [Improvement] Introduce `Clients::Buffered` useful for writing specs that do not have to talk with Kafka (id-ilych)
71
+ - [Improvement] Make `#produce` method private to avoid confusion and make sure it is not used directly (it is not part of the official API).
72
+ - [Change] Change `wait_on_queue_full` from `false` to `true` as a default.
73
+ - [Change] Rename `wait_on_queue_full_timeout` to `wait_backoff_on_queue_full` to match what it actually does.
74
+ - [Enhancement] Introduce `wait_timeout_on_queue_full` with proper meaning. That is, this represents time after which despite backoff the error will be raised. This should allow to raise an error in case the backoff attempts were insufficient. This prevents from a case, where upon never deliverable messages we would end up with an infinite loop.
75
+ - [Fix] Provide `type` for queue full errors that references the appropriate public API method correctly.
76
+
77
+ ### Upgrade notes
78
+
79
+ 1. Rename `wait_on_queue_full_timeout` to `wait_backoff_on_queue_full`.
80
+ 2. Set `wait_on_queue_full` to `false` if you did not use it and do not want.
81
+
82
+ ## 2.5.3 (2023-05-26)
83
+ - [Enhancement] Include topic name in the `error.occurred` notification payload.
84
+ - [Enhancement] Include topic name in the `message.acknowledged` notification payload.
85
+ - [Maintenance] Require `karafka-core` `2.0.13`
86
+
87
+ ## 2.5.2 (2023-04-24)
88
+ - [Fix] Require missing Pathname (#345)
89
+
90
+ ## 2.5.1 (2023-03-09)
91
+ - [Feature] Introduce a configurable backoff upon `librdkafka` queue full (false by default).
92
+
93
+ ## 2.5.0 (2023-03-04)
94
+ - [Feature] Pipe **all** the errors including synchronous errors via the `error.occurred`.
95
+ - [Improvement] Pipe delivery errors that occurred not via the error callback using the `error.occurred` channel.
96
+ - [Improvement] Introduce `WaterDrop::Errors::ProduceError` and `WaterDrop::Errors::ProduceManyError` for any inline raised errors that occur. You can get the original error by using the `#cause`.
97
+ - [Improvement] Include `#dispatched` messages handler in the `WaterDrop::Errors::ProduceManyError` error, to be able to understand which of the messages were delegated to `librdkafka` prior to the failure.
98
+ - [Maintenance] Remove the `WaterDrop::Errors::FlushFailureError` in favour of correct error that occurred to unify the error handling.
99
+ - [Maintenance] Rename `Datadog::Listener` to `Datadog::MetricsListener` to align with Karafka (#329).
100
+ - [Fix] Do **not** flush when there is no data to flush in the internal buffer.
101
+ - [Fix] Wait on the final data flush for short-lived producers to make sure, that the message is actually dispatched by `librdkafka` or timeout.
102
+
103
+ ### Upgrade notes
104
+
105
+ Please note, this **is** a **breaking** release, hence `2.5.0`.
106
+
107
+ 1. If you used to catch `WaterDrop::Errors::FlushFailureError` now you need to catch `WaterDrop::Errors::ProduceError`. `WaterDrop::Errors::ProduceManyError` is based on the `ProduceError`, hence it should be enough.
108
+ 2. Prior to `2.5.0` there was always a chance of partial dispatches via `produce_many_` methods. Now you can get the info on all the errors via `error.occurred`.
109
+ 3. Inline `Rdkafka::RdkafkaError` are now re-raised via `WaterDrop::Errors::ProduceError` and available under `#cause`. Async `Rdkafka::RdkafkaError` errors are still directly available and you can differentiate between errors using the event `type`.
110
+ 4. If you are using the Datadog listener, you need to:
111
+
112
+ ```ruby
113
+ # Replace require:
114
+ require 'waterdrop/instrumentation/vendors/datadog/listener'
115
+ # With
116
+ require 'waterdrop/instrumentation/vendors/datadog/metrics_listener'
117
+
118
+ # Replace references of
119
+ ::WaterDrop::Instrumentation::Vendors::Datadog::Listener.new
120
+ # With
121
+ ::WaterDrop::Instrumentation::Vendors::Datadog::MetricsListener.new
122
+ ```
123
+
124
+ ## 2.4.11 (2023-02-24)
125
+ - Replace the local rspec locator with generalized core one.
126
+ - Make `::WaterDrop::Instrumentation::Notifications::EVENTS` list public for anyone wanting to re-bind those into a different notification bus.
127
+
128
+ ## 2.4.10 (2023-01-30)
129
+ - Include `caller` in the error instrumentation to align with Karafka.
130
+
131
+ ## 2.4.9 (2023-01-11)
132
+ - Remove empty debug logging out of `LoggerListener`.
133
+ - Do not lock Ruby version in Karafka in favour of `karafka-core`.
134
+ - Make sure `karafka-core` version is at least `2.0.9` to make sure we run `karafka-rdkafka`.
135
+
136
+ ## 2.4.8 (2023-01-07)
137
+ - Use monotonic time from Karafka core.
138
+
139
+ ## 2.4.7 (2022-12-18)
140
+ - Add support to customizable middlewares that can modify message hash prior to validation and dispatch.
141
+ - Fix a case where upon not-available leader, metadata request would not be retried
142
+ - Require `karafka-core` 2.0.7.
143
+
144
+ ## 2.4.6 (2022-12-10)
145
+ - Set `statistics.interval.ms` to 5 seconds by default, so the defaults cover all the instrumentation out of the box.
146
+
147
+ ### Upgrade notes
148
+
149
+ If you want to disable `librdkafka` statistics because you do not use them at all, update the `kafka` `statistics.interval.ms` setting and set it to `0`:
150
+
151
+ ```ruby
152
+ producer = WaterDrop::Producer.new
153
+
154
+ producer.setup do |config|
155
+ config.deliver = true
156
+ config.kafka = {
157
+ 'bootstrap.servers': 'localhost:9092',
158
+ 'statistics.interval.ms': 0
159
+ }
160
+ end
161
+ ```
162
+
163
+ ## 2.4.5 (2022-12-10)
164
+ - Fix invalid error scope visibility.
165
+ - Cache partition count to improve messages production and lower stress on Kafka when `partition_key` is on.
166
+
167
+ ## 2.4.4 (2022-12-09)
168
+ - Add temporary patch on top of `rdkafka-ruby` to mitigate metadata fetch timeout failures.
169
+
170
+ ## 2.4.3 (2022-12-07)
171
+ - Support for librdkafka 0.13
172
+ - Update Github Actions
173
+ - Change auto-generated id from `SecureRandom#uuid` to `SecureRandom#hex(6)`
174
+ - Remove shared components that were moved to `karafka-core` from WaterDrop
175
+
176
+ ## 2.4.2 (2022-09-29)
177
+ - Allow sending tombstone messages (#267)
178
+
179
+ ## 2.4.1 (2022-08-01)
180
+ - Replace local statistics decorator with the one extracted to `karafka-core`.
181
+
182
+ ## 2.4.0 (2022-07-28)
183
+ - Small refactor of the DataDog/Statsd listener to align for future extraction to `karafka-common`.
184
+ - Replace `dry-monitor` with home-brew notification layer (API compatible) and allow for usage with `ActiveSupport::Notifications`.
185
+ - Remove all the common code into `karafka-core` and add it as a dependency.
186
+
187
+ ## 2.3.3 (2022-07-18)
188
+ - Replace `dry-validation` with home-brew validation layer and drop direct dependency on `dry-validation`.
189
+ - Remove indirect dependency on dry-configurable from DataDog listener (no changes required).
190
+
191
+ ## 2.3.2 (2022-07-17)
192
+ - Replace `dry-configurable` with home-brew config and drop direct dependency on `dry-configurable`.
193
+
194
+ ## 2.3.1 (2022-06-17)
195
+ - Update rdkafka patches to align with `0.12.0` and `0.11.1` support.
196
+
197
+ ## 2.3.0 (2022-04-03)
198
+ - Rename StdoutListener to LoggerListener (#240)
199
+
200
+ ## 2.2.0 (2022-02-18)
201
+ - Add Datadog listener for metrics + errors publishing
202
+ - Add Datadog example dashboard template
203
+ - Update Readme to show Dd instrumentation usage
204
+ - Align the directory namespace convention with gem name (waterdrop => WaterDrop)
205
+ - Introduce a common base for validation contracts
206
+ - Drop CI support for ruby 2.6
207
+ - Require all `kafka` settings to have symbol keys (compatibility with Karafka 2.0 and rdkafka)
208
+
209
+ ## 2.1.0 (2022-01-03)
210
+ - Ruby 3.1 support
211
+ - Change the error notification key from `error.emitted` to `error.occurred`.
212
+ - Normalize error tracking and make all the places publish errors into the same notification endpoint (`error.occurred`).
213
+ - Start semantic versioning WaterDrop.
214
+
3
215
  ## 2.0.7 (2021-12-03)
4
216
  - Source code metadata url added to the gemspec
5
217
  - Replace `:producer` with `:producer_id` in events and update `StdoutListener` accordingly. This change aligns all the events in terms of not publishing the whole producer object in the events.
data/Gemfile CHANGED
@@ -6,8 +6,6 @@ plugin 'diffend'
6
6
 
7
7
  gemspec
8
8
 
9
- gem 'rdkafka'
10
-
11
9
  group :development do
12
10
  gem 'byebug'
13
11
  end
data/Gemfile.lock CHANGED
@@ -1,112 +1,82 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- waterdrop (2.0.7)
5
- concurrent-ruby (>= 1.1)
6
- dry-configurable (~> 0.13)
7
- dry-monitor (~> 0.5)
8
- dry-validation (~> 1.7)
9
- rdkafka (>= 0.10)
4
+ waterdrop (2.6.14)
5
+ karafka-core (>= 2.2.3, < 3.0.0)
10
6
  zeitwerk (~> 2.3)
11
7
 
12
8
  GEM
13
9
  remote: https://rubygems.org/
14
10
  specs:
15
- activesupport (6.1.4.1)
11
+ activesupport (7.1.3)
12
+ base64
13
+ bigdecimal
16
14
  concurrent-ruby (~> 1.0, >= 1.0.2)
15
+ connection_pool (>= 2.2.5)
16
+ drb
17
17
  i18n (>= 1.6, < 2)
18
18
  minitest (>= 5.1)
19
+ mutex_m
19
20
  tzinfo (~> 2.0)
20
- zeitwerk (~> 2.3)
21
+ base64 (0.2.0)
22
+ bigdecimal (3.1.6)
21
23
  byebug (11.1.3)
22
- concurrent-ruby (1.1.9)
23
- diff-lcs (1.4.4)
24
+ concurrent-ruby (1.2.3)
25
+ connection_pool (2.4.1)
26
+ diff-lcs (1.5.1)
24
27
  docile (1.4.0)
25
- dry-configurable (0.13.0)
26
- concurrent-ruby (~> 1.0)
27
- dry-core (~> 0.6)
28
- dry-container (0.9.0)
29
- concurrent-ruby (~> 1.0)
30
- dry-configurable (~> 0.13, >= 0.13.0)
31
- dry-core (0.7.1)
32
- concurrent-ruby (~> 1.0)
33
- dry-events (0.3.0)
34
- concurrent-ruby (~> 1.0)
35
- dry-core (~> 0.5, >= 0.5)
36
- dry-inflector (0.2.1)
37
- dry-initializer (3.0.4)
38
- dry-logic (1.2.0)
39
- concurrent-ruby (~> 1.0)
40
- dry-core (~> 0.5, >= 0.5)
41
- dry-monitor (0.5.0)
42
- dry-configurable (~> 0.13, >= 0.13.0)
43
- dry-core (~> 0.5, >= 0.5)
44
- dry-events (~> 0.2)
45
- dry-schema (1.8.0)
46
- concurrent-ruby (~> 1.0)
47
- dry-configurable (~> 0.13, >= 0.13.0)
48
- dry-core (~> 0.5, >= 0.5)
49
- dry-initializer (~> 3.0)
50
- dry-logic (~> 1.0)
51
- dry-types (~> 1.5)
52
- dry-types (1.5.1)
53
- concurrent-ruby (~> 1.0)
54
- dry-container (~> 0.3)
55
- dry-core (~> 0.5, >= 0.5)
56
- dry-inflector (~> 0.1, >= 0.1.2)
57
- dry-logic (~> 1.0, >= 1.0.2)
58
- dry-validation (1.7.0)
59
- concurrent-ruby (~> 1.0)
60
- dry-container (~> 0.7, >= 0.7.1)
61
- dry-core (~> 0.5, >= 0.5)
62
- dry-initializer (~> 3.0)
63
- dry-schema (~> 1.8, >= 1.8.0)
64
- factory_bot (6.2.0)
28
+ drb (2.2.0)
29
+ ruby2_keywords
30
+ factory_bot (6.4.5)
65
31
  activesupport (>= 5.0.0)
66
- ffi (1.15.4)
67
- i18n (1.8.11)
32
+ ffi (1.16.3)
33
+ i18n (1.14.1)
68
34
  concurrent-ruby (~> 1.0)
69
- mini_portile2 (2.7.1)
70
- minitest (5.14.4)
71
- rake (13.0.6)
72
- rdkafka (0.11.0)
35
+ karafka-core (2.2.7)
36
+ concurrent-ruby (>= 1.1)
37
+ karafka-rdkafka (>= 0.13.9, < 0.15.0)
38
+ karafka-rdkafka (0.14.7)
73
39
  ffi (~> 1.15)
74
- mini_portile2 (~> 2.7)
40
+ mini_portile2 (~> 2.6)
75
41
  rake (> 12)
76
- rspec (3.10.0)
77
- rspec-core (~> 3.10.0)
78
- rspec-expectations (~> 3.10.0)
79
- rspec-mocks (~> 3.10.0)
80
- rspec-core (3.10.1)
81
- rspec-support (~> 3.10.0)
82
- rspec-expectations (3.10.1)
42
+ mini_portile2 (2.8.5)
43
+ minitest (5.21.2)
44
+ mutex_m (0.2.0)
45
+ rake (13.1.0)
46
+ rspec (3.13.0)
47
+ rspec-core (~> 3.13.0)
48
+ rspec-expectations (~> 3.13.0)
49
+ rspec-mocks (~> 3.13.0)
50
+ rspec-core (3.13.0)
51
+ rspec-support (~> 3.13.0)
52
+ rspec-expectations (3.13.0)
83
53
  diff-lcs (>= 1.2.0, < 2.0)
84
- rspec-support (~> 3.10.0)
85
- rspec-mocks (3.10.2)
54
+ rspec-support (~> 3.13.0)
55
+ rspec-mocks (3.13.0)
86
56
  diff-lcs (>= 1.2.0, < 2.0)
87
- rspec-support (~> 3.10.0)
88
- rspec-support (3.10.3)
89
- simplecov (0.21.2)
57
+ rspec-support (~> 3.13.0)
58
+ rspec-support (3.13.0)
59
+ ruby2_keywords (0.0.5)
60
+ simplecov (0.22.0)
90
61
  docile (~> 1.1)
91
62
  simplecov-html (~> 0.11)
92
63
  simplecov_json_formatter (~> 0.1)
93
64
  simplecov-html (0.12.3)
94
- simplecov_json_formatter (0.1.3)
95
- tzinfo (2.0.4)
65
+ simplecov_json_formatter (0.1.4)
66
+ tzinfo (2.0.6)
96
67
  concurrent-ruby (~> 1.0)
97
- zeitwerk (2.5.1)
68
+ zeitwerk (2.6.12)
98
69
 
99
70
  PLATFORMS
100
- x86_64-darwin
71
+ ruby
101
72
  x86_64-linux
102
73
 
103
74
  DEPENDENCIES
104
75
  byebug
105
76
  factory_bot
106
- rdkafka
107
77
  rspec
108
78
  simplecov
109
79
  waterdrop!
110
80
 
111
81
  BUNDLED WITH
112
- 2.2.31
82
+ 2.5.4