waterdrop 2.0.7 → 2.6.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.github/FUNDING.yml +1 -0
- data/.github/workflows/ci.yml +22 -11
- data/.ruby-version +1 -1
- data/CHANGELOG.md +200 -0
- data/Gemfile +0 -2
- data/Gemfile.lock +32 -75
- data/README.md +22 -275
- data/certs/cert_chain.pem +26 -0
- data/config/locales/errors.yml +33 -0
- data/docker-compose.yml +19 -12
- data/lib/waterdrop/clients/buffered.rb +90 -0
- data/lib/waterdrop/clients/dummy.rb +69 -0
- data/lib/waterdrop/clients/rdkafka.rb +34 -0
- data/lib/{water_drop → waterdrop}/config.rb +39 -16
- data/lib/waterdrop/contracts/config.rb +43 -0
- data/lib/waterdrop/contracts/message.rb +64 -0
- data/lib/{water_drop → waterdrop}/errors.rb +14 -7
- data/lib/waterdrop/instrumentation/callbacks/delivery.rb +102 -0
- data/lib/{water_drop → waterdrop}/instrumentation/callbacks/error.rb +6 -2
- data/lib/{water_drop → waterdrop}/instrumentation/callbacks/statistics.rb +1 -1
- data/lib/{water_drop/instrumentation/stdout_listener.rb → waterdrop/instrumentation/logger_listener.rb} +66 -21
- data/lib/waterdrop/instrumentation/monitor.rb +20 -0
- data/lib/{water_drop/instrumentation/monitor.rb → waterdrop/instrumentation/notifications.rb} +12 -14
- data/lib/waterdrop/instrumentation/vendors/datadog/dashboard.json +1 -0
- data/lib/waterdrop/instrumentation/vendors/datadog/metrics_listener.rb +210 -0
- data/lib/waterdrop/middleware.rb +50 -0
- data/lib/{water_drop → waterdrop}/producer/async.rb +40 -4
- data/lib/{water_drop → waterdrop}/producer/buffer.rb +12 -30
- data/lib/{water_drop → waterdrop}/producer/builder.rb +6 -11
- data/lib/{water_drop → waterdrop}/producer/sync.rb +44 -15
- data/lib/waterdrop/producer/transactions.rb +170 -0
- data/lib/waterdrop/producer.rb +308 -0
- data/lib/{water_drop → waterdrop}/version.rb +1 -1
- data/lib/waterdrop.rb +28 -2
- data/renovate.json +6 -0
- data/waterdrop.gemspec +14 -11
- data.tar.gz.sig +0 -0
- metadata +71 -111
- metadata.gz.sig +0 -0
- data/certs/mensfeld.pem +0 -25
- data/config/errors.yml +0 -6
- data/lib/water_drop/contracts/config.rb +0 -26
- data/lib/water_drop/contracts/message.rb +0 -42
- data/lib/water_drop/instrumentation/callbacks/delivery.rb +0 -30
- data/lib/water_drop/instrumentation/callbacks/statistics_decorator.rb +0 -77
- data/lib/water_drop/instrumentation/callbacks_manager.rb +0 -39
- data/lib/water_drop/instrumentation.rb +0 -20
- data/lib/water_drop/patches/rdkafka/bindings.rb +0 -42
- data/lib/water_drop/patches/rdkafka/producer.rb +0 -20
- data/lib/water_drop/producer/dummy_client.rb +0 -32
- data/lib/water_drop/producer.rb +0 -162
- data/lib/water_drop.rb +0 -36
- /data/lib/{water_drop → waterdrop}/contracts.rb +0 -0
- /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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3798d61ff3464dd6aaeb21f5457230a3b079748f260c59138142144efc62dc40
|
4
|
+
data.tar.gz: c9699bc202a67fbb8e456a4e0d316f56e8635e0986a09d0429a25999553c4a76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6a6d03d205314775b71ca0c4e922ef52159965e30b9280727712f25368f6af78c821d6d468b2362bd4094fbd2d4747195dc1e3a7cd76a0e4582f81a66829b43
|
7
|
+
data.tar.gz: 9541ae05afde65cf1124661fd57e23afb4265601748c6b4a60f6fc6f8cabe463cf59b6ac683e7d047e454cc671182808f800add0f68b780bbb1b1325abcab892
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/.github/FUNDING.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
custom: ['https://karafka.io/#become-pro']
|
data/.github/workflows/ci.yml
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
name: ci
|
2
2
|
|
3
|
+
concurrency: ci-${{ github.ref }}
|
4
|
+
|
3
5
|
on:
|
4
6
|
pull_request:
|
5
7
|
push:
|
@@ -14,35 +16,44 @@ jobs:
|
|
14
16
|
fail-fast: false
|
15
17
|
matrix:
|
16
18
|
ruby:
|
19
|
+
- '3.3.0-preview2'
|
20
|
+
- '3.2'
|
21
|
+
- '3.1'
|
17
22
|
- '3.0'
|
18
23
|
- '2.7'
|
19
|
-
- '2.6'
|
20
|
-
- 'jruby-9.3.1.0'
|
21
24
|
include:
|
22
|
-
- ruby: '3.
|
25
|
+
- ruby: '3.2'
|
23
26
|
coverage: 'true'
|
24
27
|
steps:
|
25
|
-
- uses: actions/checkout@
|
28
|
+
- uses: actions/checkout@v4
|
29
|
+
|
26
30
|
- name: Install package dependencies
|
27
31
|
run: "[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS"
|
32
|
+
|
28
33
|
- name: Set up Ruby
|
29
34
|
uses: ruby/setup-ruby@v1
|
30
35
|
with:
|
31
36
|
ruby-version: ${{matrix.ruby}}
|
37
|
+
bundler-cache: true
|
38
|
+
|
32
39
|
- 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
40
|
run: |
|
36
|
-
docker-compose up -d
|
37
|
-
|
41
|
+
docker-compose up -d || (sleep 5 && docker-compose up -d)
|
42
|
+
|
43
|
+
- name: Wait for Kafka
|
44
|
+
run: |
|
45
|
+
sleep 15
|
46
|
+
|
38
47
|
- name: Install latest bundler
|
39
48
|
run: |
|
40
49
|
gem install bundler --no-document
|
41
50
|
bundle config set without 'tools benchmarks docs'
|
51
|
+
|
42
52
|
- name: Bundle install
|
43
53
|
run: |
|
44
54
|
bundle config set without development
|
45
55
|
bundle install --jobs 4 --retry 3
|
56
|
+
|
46
57
|
- name: Run all tests
|
47
58
|
env:
|
48
59
|
GITHUB_COVERAGE: ${{matrix.coverage}}
|
@@ -53,13 +64,13 @@ jobs:
|
|
53
64
|
strategy:
|
54
65
|
fail-fast: false
|
55
66
|
steps:
|
56
|
-
- uses: actions/checkout@
|
67
|
+
- uses: actions/checkout@v4
|
57
68
|
with:
|
58
69
|
fetch-depth: 0
|
59
70
|
- name: Set up Ruby
|
60
71
|
uses: ruby/setup-ruby@v1
|
61
72
|
with:
|
62
|
-
ruby-version: 3.
|
73
|
+
ruby-version: 3.2
|
63
74
|
- name: Install latest bundler
|
64
75
|
run: gem install bundler --no-document
|
65
76
|
- name: Install Diffend plugin
|
@@ -72,7 +83,7 @@ jobs:
|
|
72
83
|
strategy:
|
73
84
|
fail-fast: false
|
74
85
|
steps:
|
75
|
-
- uses: actions/checkout@
|
86
|
+
- uses: actions/checkout@v4
|
76
87
|
with:
|
77
88
|
fetch-depth: 0
|
78
89
|
- name: Run Coditsu
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.2.2
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,205 @@
|
|
1
1
|
# WaterDrop changelog
|
2
2
|
|
3
|
+
## 2.6.11 (2023-10-25)
|
4
|
+
- [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.
|
5
|
+
- [Fix] Fix a case where buffered test client would not accumulate messages on failed transactions
|
6
|
+
|
7
|
+
## 2.6.10 (2023-10-24)
|
8
|
+
- [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`.
|
9
|
+
- [Fix] Fix a case where `message.acknowledged` would not have `caller` key.
|
10
|
+
- [Fix] Fix a bug where critical errors (like `IRB::Abort`) would not abort the ongoing transaction.
|
11
|
+
|
12
|
+
## 2.6.9 (2023-10-23)
|
13
|
+
- [Improvement] Introduce a `transaction.finished` event to indicate that transaction has finished whether it was aborted or committed.
|
14
|
+
- [Improvement] Use `transaction.committed` event to indicate that transaction has been committed.
|
15
|
+
|
16
|
+
## 2.6.8 (2023-10-20)
|
17
|
+
- **[Feature]** Introduce transactions support.
|
18
|
+
- [Improvement] Expand `LoggerListener` to inform about transactions (info level).
|
19
|
+
- [Improvement] Allow waterdrop to use topic as a symbol or a string.
|
20
|
+
- [Improvement] Enhance both `message.acknowledged` and `error.occurred` (for `librdkafka.dispatch_error`) with full delivery_report.
|
21
|
+
- [Improvement] Provide `#close!` that will force producer close even with outgoing data after the ma wait timeout.
|
22
|
+
- [Improvement] Provide `#purge` that will purge any outgoing data and data from the internal queues (both WaterDrop and librdkafka).
|
23
|
+
- [Fix] Fix the `librdkafka.dispatch_error` error dispatch for errors with negative code.
|
24
|
+
|
25
|
+
## 2.6.7 (2023-09-01)
|
26
|
+
- [Improvement] early flush data from `librdkafka` internal buffer before closing.
|
27
|
+
- [Maintenance] Update the signing cert as the old one expired.
|
28
|
+
|
29
|
+
## 2.6.6 (2023-08-03)
|
30
|
+
- [Improvement] Provide `log_messages` option to `LoggerListener` so the extensive messages data logging can disabled.
|
31
|
+
|
32
|
+
## 2.6.5 (2023-07-22)
|
33
|
+
- [Fix] Add cause to the errors that are passed into instrumentation (konalegi)
|
34
|
+
|
35
|
+
## 2.6.4 (2023-07-11)
|
36
|
+
- [Improvement] Use original error `#inspect` for `WaterDrop::Errors::ProduceError` and `WaterDrop::Errors::ProduceManyError` instead of the current empty string.
|
37
|
+
|
38
|
+
## 2.6.3 (2023-06-28)
|
39
|
+
- [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).
|
40
|
+
- [Change] Require `karafka-rdkafka` `>= 0.13.2`.
|
41
|
+
- [Change] Require 'karafka-core' `>= 2.1.1`
|
42
|
+
|
43
|
+
## 2.6.2 (2023-06-21)
|
44
|
+
- [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.
|
45
|
+
- [Refactor] Make private methods private.
|
46
|
+
- [Refactor] Validate that producer is not closed only when attempting to produce.
|
47
|
+
- [Refactor] Improve one 5 minute long spec to run in 10 seconds.
|
48
|
+
- [Refactor] clear client assignment after closing.
|
49
|
+
|
50
|
+
## 2.6.1 (2023-06-19)
|
51
|
+
- [Refactor] Remove no longer needed patches.
|
52
|
+
- [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).
|
53
|
+
- [Change] Require `karafka-rdkafka` `>= 0.13.0`.
|
54
|
+
- [Change] Require 'karafka-core' `>= 2.1.0`
|
55
|
+
|
56
|
+
## 2.6.0 (2023-06-11)
|
57
|
+
- [Improvement] Introduce `client_class` setting for ability to replace underlying client with anything specific to a given env (dev, test, etc).
|
58
|
+
- [Improvement] Introduce `Clients::Buffered` useful for writing specs that do not have to talk with Kafka (id-ilych)
|
59
|
+
- [Improvement] Make `#produce` method private to avoid confusion and make sure it is not used directly (it is not part of the official API).
|
60
|
+
- [Change] Change `wait_on_queue_full` from `false` to `true` as a default.
|
61
|
+
- [Change] Rename `wait_on_queue_full_timeout` to `wait_backoff_on_queue_full` to match what it actually does.
|
62
|
+
- [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.
|
63
|
+
- [Fix] Provide `type` for queue full errors that references the appropriate public API method correctly.
|
64
|
+
|
65
|
+
### Upgrade notes
|
66
|
+
|
67
|
+
1. Rename `wait_on_queue_full_timeout` to `wait_backoff_on_queue_full`.
|
68
|
+
2. Set `wait_on_queue_full` to `false` if you did not use it and do not want.
|
69
|
+
|
70
|
+
## 2.5.3 (2023-05-26)
|
71
|
+
- [Enhancement] Include topic name in the `error.occurred` notification payload.
|
72
|
+
- [Enhancement] Include topic name in the `message.acknowledged` notification payload.
|
73
|
+
- [Maintenance] Require `karafka-core` `2.0.13`
|
74
|
+
|
75
|
+
## 2.5.2 (2023-04-24)
|
76
|
+
- [Fix] Require missing Pathname (#345)
|
77
|
+
|
78
|
+
## 2.5.1 (2023-03-09)
|
79
|
+
- [Feature] Introduce a configurable backoff upon `librdkafka` queue full (false by default).
|
80
|
+
|
81
|
+
## 2.5.0 (2023-03-04)
|
82
|
+
- [Feature] Pipe **all** the errors including synchronous errors via the `error.occurred`.
|
83
|
+
- [Improvement] Pipe delivery errors that occurred not via the error callback using the `error.occurred` channel.
|
84
|
+
- [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`.
|
85
|
+
- [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.
|
86
|
+
- [Maintenance] Remove the `WaterDrop::Errors::FlushFailureError` in favour of correct error that occurred to unify the error handling.
|
87
|
+
- [Maintenance] Rename `Datadog::Listener` to `Datadog::MetricsListener` to align with Karafka (#329).
|
88
|
+
- [Fix] Do **not** flush when there is no data to flush in the internal buffer.
|
89
|
+
- [Fix] Wait on the final data flush for short-lived producers to make sure, that the message is actually dispatched by `librdkafka` or timeout.
|
90
|
+
|
91
|
+
### Upgrade notes
|
92
|
+
|
93
|
+
Please note, this **is** a **breaking** release, hence `2.5.0`.
|
94
|
+
|
95
|
+
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.
|
96
|
+
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`.
|
97
|
+
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`.
|
98
|
+
4. If you are using the Datadog listener, you need to:
|
99
|
+
|
100
|
+
```ruby
|
101
|
+
# Replace require:
|
102
|
+
require 'waterdrop/instrumentation/vendors/datadog/listener'
|
103
|
+
# With
|
104
|
+
require 'waterdrop/instrumentation/vendors/datadog/metrics_listener'
|
105
|
+
|
106
|
+
# Replace references of
|
107
|
+
::WaterDrop::Instrumentation::Vendors::Datadog::Listener.new
|
108
|
+
# With
|
109
|
+
::WaterDrop::Instrumentation::Vendors::Datadog::MetricsListener.new
|
110
|
+
```
|
111
|
+
|
112
|
+
## 2.4.11 (2023-02-24)
|
113
|
+
- Replace the local rspec locator with generalized core one.
|
114
|
+
- Make `::WaterDrop::Instrumentation::Notifications::EVENTS` list public for anyone wanting to re-bind those into a different notification bus.
|
115
|
+
|
116
|
+
## 2.4.10 (2023-01-30)
|
117
|
+
- Include `caller` in the error instrumentation to align with Karafka.
|
118
|
+
|
119
|
+
## 2.4.9 (2023-01-11)
|
120
|
+
- Remove empty debug logging out of `LoggerListener`.
|
121
|
+
- Do not lock Ruby version in Karafka in favour of `karafka-core`.
|
122
|
+
- Make sure `karafka-core` version is at least `2.0.9` to make sure we run `karafka-rdkafka`.
|
123
|
+
|
124
|
+
## 2.4.8 (2023-01-07)
|
125
|
+
- Use monotonic time from Karafka core.
|
126
|
+
|
127
|
+
## 2.4.7 (2022-12-18)
|
128
|
+
- Add support to customizable middlewares that can modify message hash prior to validation and dispatch.
|
129
|
+
- Fix a case where upon not-available leader, metadata request would not be retried
|
130
|
+
- Require `karafka-core` 2.0.7.
|
131
|
+
|
132
|
+
## 2.4.6 (2022-12-10)
|
133
|
+
- Set `statistics.interval.ms` to 5 seconds by default, so the defaults cover all the instrumentation out of the box.
|
134
|
+
|
135
|
+
### Upgrade notes
|
136
|
+
|
137
|
+
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`:
|
138
|
+
|
139
|
+
```ruby
|
140
|
+
producer = WaterDrop::Producer.new
|
141
|
+
|
142
|
+
producer.setup do |config|
|
143
|
+
config.deliver = true
|
144
|
+
config.kafka = {
|
145
|
+
'bootstrap.servers': 'localhost:9092',
|
146
|
+
'statistics.interval.ms': 0
|
147
|
+
}
|
148
|
+
end
|
149
|
+
```
|
150
|
+
|
151
|
+
## 2.4.5 (2022-12-10)
|
152
|
+
- Fix invalid error scope visibility.
|
153
|
+
- Cache partition count to improve messages production and lower stress on Kafka when `partition_key` is on.
|
154
|
+
|
155
|
+
## 2.4.4 (2022-12-09)
|
156
|
+
- Add temporary patch on top of `rdkafka-ruby` to mitigate metadata fetch timeout failures.
|
157
|
+
|
158
|
+
## 2.4.3 (2022-12-07)
|
159
|
+
- Support for librdkafka 0.13
|
160
|
+
- Update Github Actions
|
161
|
+
- Change auto-generated id from `SecureRandom#uuid` to `SecureRandom#hex(6)`
|
162
|
+
- Remove shared components that were moved to `karafka-core` from WaterDrop
|
163
|
+
|
164
|
+
## 2.4.2 (2022-09-29)
|
165
|
+
- Allow sending tombstone messages (#267)
|
166
|
+
|
167
|
+
## 2.4.1 (2022-08-01)
|
168
|
+
- Replace local statistics decorator with the one extracted to `karafka-core`.
|
169
|
+
|
170
|
+
## 2.4.0 (2022-07-28)
|
171
|
+
- Small refactor of the DataDog/Statsd listener to align for future extraction to `karafka-common`.
|
172
|
+
- Replace `dry-monitor` with home-brew notification layer (API compatible) and allow for usage with `ActiveSupport::Notifications`.
|
173
|
+
- Remove all the common code into `karafka-core` and add it as a dependency.
|
174
|
+
|
175
|
+
## 2.3.3 (2022-07-18)
|
176
|
+
- Replace `dry-validation` with home-brew validation layer and drop direct dependency on `dry-validation`.
|
177
|
+
- Remove indirect dependency on dry-configurable from DataDog listener (no changes required).
|
178
|
+
|
179
|
+
## 2.3.2 (2022-07-17)
|
180
|
+
- Replace `dry-configurable` with home-brew config and drop direct dependency on `dry-configurable`.
|
181
|
+
|
182
|
+
## 2.3.1 (2022-06-17)
|
183
|
+
- Update rdkafka patches to align with `0.12.0` and `0.11.1` support.
|
184
|
+
|
185
|
+
## 2.3.0 (2022-04-03)
|
186
|
+
- Rename StdoutListener to LoggerListener (#240)
|
187
|
+
|
188
|
+
## 2.2.0 (2022-02-18)
|
189
|
+
- Add Datadog listener for metrics + errors publishing
|
190
|
+
- Add Datadog example dashboard template
|
191
|
+
- Update Readme to show Dd instrumentation usage
|
192
|
+
- Align the directory namespace convention with gem name (waterdrop => WaterDrop)
|
193
|
+
- Introduce a common base for validation contracts
|
194
|
+
- Drop CI support for ruby 2.6
|
195
|
+
- Require all `kafka` settings to have symbol keys (compatibility with Karafka 2.0 and rdkafka)
|
196
|
+
|
197
|
+
## 2.1.0 (2022-01-03)
|
198
|
+
- Ruby 3.1 support
|
199
|
+
- Change the error notification key from `error.emitted` to `error.occurred`.
|
200
|
+
- Normalize error tracking and make all the places publish errors into the same notification endpoint (`error.occurred`).
|
201
|
+
- Start semantic versioning WaterDrop.
|
202
|
+
|
3
203
|
## 2.0.7 (2021-12-03)
|
4
204
|
- Source code metadata url added to the gemspec
|
5
205
|
- 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
data/Gemfile.lock
CHANGED
@@ -1,112 +1,69 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
waterdrop (2.
|
5
|
-
|
6
|
-
dry-configurable (~> 0.13)
|
7
|
-
dry-monitor (~> 0.5)
|
8
|
-
dry-validation (~> 1.7)
|
9
|
-
rdkafka (>= 0.10)
|
4
|
+
waterdrop (2.6.11)
|
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 (
|
11
|
+
activesupport (7.0.7.2)
|
16
12
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
17
13
|
i18n (>= 1.6, < 2)
|
18
14
|
minitest (>= 5.1)
|
19
15
|
tzinfo (~> 2.0)
|
20
|
-
zeitwerk (~> 2.3)
|
21
16
|
byebug (11.1.3)
|
22
|
-
concurrent-ruby (1.
|
23
|
-
diff-lcs (1.
|
17
|
+
concurrent-ruby (1.2.2)
|
18
|
+
diff-lcs (1.5.0)
|
24
19
|
docile (1.4.0)
|
25
|
-
|
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)
|
20
|
+
factory_bot (6.3.0)
|
65
21
|
activesupport (>= 5.0.0)
|
66
|
-
ffi (1.15.
|
67
|
-
i18n (1.
|
22
|
+
ffi (1.15.5)
|
23
|
+
i18n (1.14.1)
|
68
24
|
concurrent-ruby (~> 1.0)
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
rdkafka (0.
|
25
|
+
karafka-core (2.2.3)
|
26
|
+
concurrent-ruby (>= 1.1)
|
27
|
+
karafka-rdkafka (>= 0.13.6, < 0.14.0)
|
28
|
+
karafka-rdkafka (0.13.6)
|
73
29
|
ffi (~> 1.15)
|
74
|
-
mini_portile2 (~> 2.
|
30
|
+
mini_portile2 (~> 2.6)
|
75
31
|
rake (> 12)
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
rspec-
|
82
|
-
|
32
|
+
mini_portile2 (2.8.2)
|
33
|
+
minitest (5.19.0)
|
34
|
+
rake (13.0.6)
|
35
|
+
rspec (3.12.0)
|
36
|
+
rspec-core (~> 3.12.0)
|
37
|
+
rspec-expectations (~> 3.12.0)
|
38
|
+
rspec-mocks (~> 3.12.0)
|
39
|
+
rspec-core (3.12.2)
|
40
|
+
rspec-support (~> 3.12.0)
|
41
|
+
rspec-expectations (3.12.3)
|
83
42
|
diff-lcs (>= 1.2.0, < 2.0)
|
84
|
-
rspec-support (~> 3.
|
85
|
-
rspec-mocks (3.
|
43
|
+
rspec-support (~> 3.12.0)
|
44
|
+
rspec-mocks (3.12.5)
|
86
45
|
diff-lcs (>= 1.2.0, < 2.0)
|
87
|
-
rspec-support (~> 3.
|
88
|
-
rspec-support (3.
|
89
|
-
simplecov (0.
|
46
|
+
rspec-support (~> 3.12.0)
|
47
|
+
rspec-support (3.12.0)
|
48
|
+
simplecov (0.22.0)
|
90
49
|
docile (~> 1.1)
|
91
50
|
simplecov-html (~> 0.11)
|
92
51
|
simplecov_json_formatter (~> 0.1)
|
93
52
|
simplecov-html (0.12.3)
|
94
|
-
simplecov_json_formatter (0.1.
|
95
|
-
tzinfo (2.0.
|
53
|
+
simplecov_json_formatter (0.1.4)
|
54
|
+
tzinfo (2.0.6)
|
96
55
|
concurrent-ruby (~> 1.0)
|
97
|
-
zeitwerk (2.
|
56
|
+
zeitwerk (2.6.8)
|
98
57
|
|
99
58
|
PLATFORMS
|
100
|
-
x86_64-darwin
|
101
59
|
x86_64-linux
|
102
60
|
|
103
61
|
DEPENDENCIES
|
104
62
|
byebug
|
105
63
|
factory_bot
|
106
|
-
rdkafka
|
107
64
|
rspec
|
108
65
|
simplecov
|
109
66
|
waterdrop!
|
110
67
|
|
111
68
|
BUNDLED WITH
|
112
|
-
2.
|
69
|
+
2.4.12
|