deimos-ruby 2.2.0 → 2.2.1
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 +4 -4
- data/.rubocop.yml +33 -30
- data/CHANGELOG.md +6 -0
- data/Gemfile +0 -6
- data/deimos-ruby.gemspec +15 -11
- data/karafka.rb +7 -4
- data/lib/deimos/active_record_consume/batch_consumption.rb +7 -7
- data/lib/deimos/active_record_consume/batch_record.rb +2 -2
- data/lib/deimos/active_record_consume/message_consumption.rb +6 -5
- data/lib/deimos/active_record_consume/schema_model_converter.rb +2 -2
- data/lib/deimos/active_record_consumer.rb +1 -0
- data/lib/deimos/active_record_producer.rb +4 -2
- data/lib/deimos/backends/base.rb +1 -3
- data/lib/deimos/backends/outbox.rb +1 -1
- data/lib/deimos/config/configuration.rb +88 -75
- data/lib/deimos/consume/batch_consumption.rb +5 -5
- data/lib/deimos/consume/message_consumption.rb +3 -3
- data/lib/deimos/ext/consumer_route.rb +3 -3
- data/lib/deimos/ext/producer_metrics_listener.rb +2 -2
- data/lib/deimos/ext/producer_middleware.rb +19 -15
- data/lib/deimos/ext/producer_route.rb +3 -1
- data/lib/deimos/ext/routing_defaults.rb +9 -7
- data/lib/deimos/ext/schema_route.rb +22 -15
- data/lib/deimos/kafka_message.rb +1 -1
- data/lib/deimos/kafka_source.rb +36 -31
- data/lib/deimos/kafka_topic_info.rb +1 -1
- data/lib/deimos/logging.rb +20 -19
- data/lib/deimos/message.rb +1 -1
- data/lib/deimos/metrics/minimal_datadog_listener.rb +19 -6
- data/lib/deimos/metrics/provider.rb +4 -4
- data/lib/deimos/producer.rb +3 -1
- data/lib/deimos/railtie.rb +1 -1
- data/lib/deimos/schema_backends/avro_base.rb +1 -1
- data/lib/deimos/schema_backends/avro_schema_coercer.rb +46 -27
- data/lib/deimos/schema_backends/avro_schema_registry.rb +8 -8
- data/lib/deimos/schema_backends/base.rb +9 -9
- data/lib/deimos/schema_backends/plain.rb +1 -1
- data/lib/deimos/schema_backends/proto_base.rb +7 -5
- data/lib/deimos/schema_backends/proto_local.rb +0 -2
- data/lib/deimos/schema_backends/proto_schema_registry.rb +0 -2
- data/lib/deimos/schema_class/base.rb +1 -1
- data/lib/deimos/schema_class/record.rb +3 -3
- data/lib/deimos/test_helpers.rb +31 -26
- data/lib/deimos/tracing/provider.rb +5 -5
- data/lib/deimos/transcoder.rb +6 -2
- data/lib/deimos/utils/db_poller/base.rb +3 -3
- data/lib/deimos/utils/deadlock_retry.rb +2 -2
- data/lib/deimos/utils/outbox_producer.rb +14 -14
- data/lib/deimos/version.rb +1 -1
- data/lib/deimos.rb +4 -4
- data/lib/generators/deimos/active_record_generator.rb +2 -1
- data/lib/generators/deimos/db_poller_generator.rb +1 -0
- data/lib/generators/deimos/outbox_backend_generator.rb +1 -0
- data/lib/generators/deimos/schema_class_generator.rb +3 -2
- data/lib/generators/deimos/v2_generator.rb +184 -155
- data/spec/active_record_batch_consumer_association_spec.rb +6 -2
- data/spec/active_record_batch_consumer_spec.rb +83 -106
- data/spec/active_record_consume/batch_consumption_spec.rb +27 -28
- data/spec/active_record_consume/batch_slicer_spec.rb +4 -12
- data/spec/active_record_consume/mass_updater_spec.rb +42 -46
- data/spec/active_record_consume/schema_model_converter_spec.rb +1 -1
- data/spec/active_record_consumer_spec.rb +7 -5
- data/spec/active_record_producer_spec.rb +83 -73
- data/spec/backends/outbox_spec.rb +1 -1
- data/spec/batch_consumer_spec.rb +20 -20
- data/spec/consumer_spec.rb +23 -12
- data/spec/gen/sample/v1/sample_pb.rb +3 -3
- data/spec/generators/active_record_generator_spec.rb +4 -4
- data/spec/generators/schema_class/my_schema_with_circular_reference_spec.rb +2 -1
- data/spec/generators/schema_class/my_schema_with_complex_types_spec.rb +9 -2
- data/spec/generators/schema_class_generator_spec.rb +5 -5
- data/spec/kafka_source_spec.rb +13 -6
- data/spec/kafka_topic_info_spec.rb +7 -7
- data/spec/karafka/karafka.rb +6 -5
- data/spec/karafka_config/karafka_spec.rb +22 -19
- data/spec/logging_spec.rb +2 -0
- data/spec/producer_spec.rb +25 -20
- data/spec/schema_backends/avro_base_shared.rb +8 -8
- data/spec/schema_backends/avro_local_spec.rb +5 -6
- data/spec/schema_backends/avro_schema_registry_spec.rb +5 -6
- data/spec/schema_backends/proto_schema_registry_spec.rb +9 -12
- data/spec/schemas/my_namespace/generated.rb +1 -2
- data/spec/schemas/my_namespace/my_schema_with_complex_type.rb +5 -8
- data/spec/schemas/my_namespace/my_schema_with_union_type.rb +22 -23
- data/spec/spec_helper.rb +13 -17
- data/spec/utils/db_poller_spec.rb +5 -5
- data/spec/utils/deadlock_retry_spec.rb +1 -4
- data/spec/utils/outbox_producer_spec.rb +36 -24
- metadata +68 -161
- data/.ruby-version +0 -1
data/spec/spec_helper.rb
CHANGED
|
@@ -16,8 +16,6 @@ require 'handlers/my_consumer'
|
|
|
16
16
|
require 'rspec/rails'
|
|
17
17
|
require 'rspec/snapshot'
|
|
18
18
|
require 'karafka/testing/rspec/helpers'
|
|
19
|
-
require "trilogy_adapter/connection"
|
|
20
|
-
ActiveRecord::Base.public_send :extend, TrilogyAdapter::Connection
|
|
21
19
|
Dir['./spec/schemas/**/*.rb'].sort.each { |f| require f }
|
|
22
20
|
|
|
23
21
|
# Constants used for consumer specs
|
|
@@ -31,18 +29,17 @@ end
|
|
|
31
29
|
DeimosApp.initialize!
|
|
32
30
|
|
|
33
31
|
module Helpers
|
|
34
|
-
|
|
35
32
|
def set_karafka_config(method, val)
|
|
36
33
|
Deimos.karafka_configs.each { |c| c.send(method.to_sym, val) }
|
|
37
34
|
end
|
|
38
35
|
|
|
39
|
-
def register_consumer(klass, schema, namespace='com.my-namespace', key_config:{none: true}, configs: {})
|
|
36
|
+
def register_consumer(klass, schema, namespace='com.my-namespace', key_config: { none: true }, configs: {})
|
|
40
37
|
Karafka::App.routes.redraw do
|
|
41
|
-
topic
|
|
42
|
-
consumer
|
|
43
|
-
schema
|
|
44
|
-
namespace
|
|
45
|
-
key_config
|
|
38
|
+
topic('my-topic') do
|
|
39
|
+
consumer(klass)
|
|
40
|
+
schema(schema)
|
|
41
|
+
namespace(namespace)
|
|
42
|
+
key_config(key_config)
|
|
46
43
|
configs.each do |k, v|
|
|
47
44
|
public_send(k, v)
|
|
48
45
|
end
|
|
@@ -99,7 +96,7 @@ module DbConfigs
|
|
|
99
96
|
# @param topic [String]
|
|
100
97
|
# @param key [String]
|
|
101
98
|
def build_message(payload, topic, key)
|
|
102
|
-
{ payload: payload, topic: topic, key: key}
|
|
99
|
+
{ payload: payload, topic: topic, key: key }
|
|
103
100
|
end
|
|
104
101
|
|
|
105
102
|
DB_OPTIONS = [
|
|
@@ -201,7 +198,7 @@ RSpec.configure do |config|
|
|
|
201
198
|
|
|
202
199
|
config.before(:all) do
|
|
203
200
|
Time.zone = 'Eastern Time (US & Canada)'
|
|
204
|
-
ActiveRecord::Base.logger = Logger.new(
|
|
201
|
+
ActiveRecord::Base.logger = Logger.new(File::NULL)
|
|
205
202
|
ActiveRecord::Base.establish_connection(
|
|
206
203
|
'adapter' => 'sqlite3',
|
|
207
204
|
'database' => 'test.sqlite3'
|
|
@@ -229,7 +226,7 @@ RSpec.configure do |config|
|
|
|
229
226
|
deimos_config.schema.nest_child_schemas = true
|
|
230
227
|
deimos_config.schema.path = File.join(File.expand_path(__dir__), 'schemas')
|
|
231
228
|
deimos_config.schema.registry_url = ENV['SCHEMA_REGISTRY'] || 'http://localhost:8081'
|
|
232
|
-
deimos_config.logger = Logger.new(
|
|
229
|
+
deimos_config.logger = Logger.new(File::NULL)
|
|
233
230
|
deimos_config.logger.level = Logger::INFO
|
|
234
231
|
deimos_config.schema.backend = :avro_validation
|
|
235
232
|
deimos_config.schema.generated_class_path = 'spec/schemas'
|
|
@@ -263,7 +260,7 @@ RSpec.shared_context('with widgets') do
|
|
|
263
260
|
end
|
|
264
261
|
|
|
265
262
|
# :nodoc:
|
|
266
|
-
class Widget < ActiveRecord::Base
|
|
263
|
+
class Widget < ActiveRecord::Base # rubocop:disable Lint/ConstantDefinitionInBlock
|
|
267
264
|
# @return [String]
|
|
268
265
|
def generated_id
|
|
269
266
|
'generated_id'
|
|
@@ -287,7 +284,7 @@ RSpec.shared_context('with widget_with_union_types') do
|
|
|
287
284
|
end
|
|
288
285
|
|
|
289
286
|
# :nodoc:
|
|
290
|
-
class WidgetWithUnionType < ActiveRecord::Base
|
|
287
|
+
class WidgetWithUnionType < ActiveRecord::Base # rubocop:disable Lint/ConstantDefinitionInBlock
|
|
291
288
|
# @return [String]
|
|
292
289
|
def generated_id
|
|
293
290
|
'generated_id'
|
|
@@ -300,7 +297,6 @@ RSpec.shared_context('with widget_with_union_types') do
|
|
|
300
297
|
end
|
|
301
298
|
end
|
|
302
299
|
|
|
303
|
-
|
|
304
300
|
RSpec.shared_context('with DB') do
|
|
305
301
|
before(:all) do
|
|
306
302
|
setup_db(self.class.metadata[:db_config] || DbConfigs::DB_OPTIONS.last)
|
|
@@ -346,7 +342,7 @@ end
|
|
|
346
342
|
|
|
347
343
|
RSpec::Matchers.define :match_message do |msg|
|
|
348
344
|
match do |actual|
|
|
349
|
-
|
|
345
|
+
|
|
350
346
|
return false unless actual.is_a?(Hash)
|
|
351
347
|
|
|
352
348
|
actual[:payloads]&.each do |p|
|
|
@@ -354,6 +350,6 @@ RSpec::Matchers.define :match_message do |msg|
|
|
|
354
350
|
p[:payload].delete('message_id')
|
|
355
351
|
end
|
|
356
352
|
expect(actual).to match(a_hash_including(msg))
|
|
357
|
-
|
|
353
|
+
|
|
358
354
|
end
|
|
359
355
|
end
|
|
@@ -44,7 +44,7 @@ each_db_config(Deimos::Utils::DbPoller::Base) do
|
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
it 'should raise an error if no pollers configured' do
|
|
47
|
-
Deimos.configure {}
|
|
47
|
+
Deimos.configure {} # rubocop:disable Lint/EmptyBlock
|
|
48
48
|
expect { Deimos::Utils::DbPoller.start! }.to raise_error('No pollers configured!')
|
|
49
49
|
end
|
|
50
50
|
|
|
@@ -159,17 +159,17 @@ each_db_config(Deimos::Utils::DbPoller::Base) do
|
|
|
159
159
|
|
|
160
160
|
# run_every is set to 1 minute
|
|
161
161
|
travel_to time_value(secs: 62)
|
|
162
|
-
expect(poller.should_run?).to
|
|
162
|
+
expect(poller.should_run?).to be(true)
|
|
163
163
|
|
|
164
164
|
travel_to time_value(secs: 30)
|
|
165
|
-
expect(poller.should_run?).to
|
|
165
|
+
expect(poller.should_run?).to be(false)
|
|
166
166
|
|
|
167
167
|
travel_to time_value(mins: -1) # this shouldn't be possible but meh
|
|
168
|
-
expect(poller.should_run?).to
|
|
168
|
+
expect(poller.should_run?).to be(false)
|
|
169
169
|
|
|
170
170
|
# take the 2 seconds of delay_time into account
|
|
171
171
|
travel_to time_value(secs: 60)
|
|
172
|
-
expect(poller.should_run?).to
|
|
172
|
+
expect(poller.should_run?).to be(false)
|
|
173
173
|
end
|
|
174
174
|
|
|
175
175
|
describe '#process_batch' do
|
|
@@ -52,10 +52,7 @@ RSpec.describe Deimos::Utils::DeadlockRetry do
|
|
|
52
52
|
Widget.create(test_id: 'second')
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
expect(Widget.all).to
|
|
56
|
-
have_attributes(test_id: 'first'),
|
|
57
|
-
have_attributes(test_id: 'second')
|
|
58
|
-
])
|
|
55
|
+
expect(Widget.all).to contain_exactly(have_attributes(test_id: 'first'), have_attributes(test_id: 'second'))
|
|
59
56
|
end
|
|
60
57
|
|
|
61
58
|
it 'should not retry non-deadlock exceptions' do
|
|
@@ -7,7 +7,7 @@ each_db_config(Deimos::Utils::OutboxProducer) do
|
|
|
7
7
|
producer
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
let(:logger) { instance_double(Logger, error: nil, info: nil, debug: nil
|
|
10
|
+
let(:logger) { instance_double(Logger, error: nil, info: nil, debug: nil) }
|
|
11
11
|
|
|
12
12
|
before(:each) do
|
|
13
13
|
stub_const('Deimos::Utils::OutboxProducer::BATCH_SIZE', 2)
|
|
@@ -15,11 +15,15 @@ each_db_config(Deimos::Utils::OutboxProducer) do
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
specify '#process_next_messages' do
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
allow(producer).to receive(:retrieve_topics).and_return(%w(topic1 topic2))
|
|
19
|
+
allow(producer).to receive(:process_topic)
|
|
20
|
+
allow(Deimos::KafkaTopicInfo).to receive(:ping_empty_topics)
|
|
21
|
+
allow(producer).to receive(:sleep)
|
|
22
22
|
producer.process_next_messages
|
|
23
|
+
expect(producer).to have_received(:retrieve_topics)
|
|
24
|
+
expect(producer).to have_received(:process_topic).twice
|
|
25
|
+
expect(Deimos::KafkaTopicInfo).to have_received(:ping_empty_topics).with(%w(topic1 topic2))
|
|
26
|
+
expect(producer).to have_received(:sleep).with(0.5)
|
|
23
27
|
end
|
|
24
28
|
|
|
25
29
|
specify '#retrieve_topics' do
|
|
@@ -45,7 +49,7 @@ each_db_config(Deimos::Utils::OutboxProducer) do
|
|
|
45
49
|
producer.current_topic = 'topic1'
|
|
46
50
|
messages = producer.retrieve_messages
|
|
47
51
|
expect(messages.size).to eq(3)
|
|
48
|
-
expect(messages).to all(
|
|
52
|
+
expect(messages).to all(be_a(Deimos::KafkaMessage))
|
|
49
53
|
end
|
|
50
54
|
|
|
51
55
|
describe '#produce_messages' do
|
|
@@ -125,13 +129,16 @@ each_db_config(Deimos::Utils::OutboxProducer) do
|
|
|
125
129
|
end
|
|
126
130
|
|
|
127
131
|
it 'should do nothing if lock fails' do
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
expect(producer).not_to receive(:retrieve_messages)
|
|
132
|
+
allow(Deimos::KafkaTopicInfo).to receive(:lock).and_return(false)
|
|
133
|
+
allow(producer).to receive(:retrieve_messages)
|
|
131
134
|
producer.process_topic('my-topic')
|
|
135
|
+
expect(Deimos::KafkaTopicInfo).to have_received(:lock).with('my-topic', 'abc')
|
|
136
|
+
expect(producer).not_to have_received(:retrieve_messages)
|
|
132
137
|
end
|
|
133
138
|
|
|
134
|
-
|
|
139
|
+
# using expect(x).to have_received(:y).ordered doesn't work
|
|
140
|
+
# rubocop:disable RSpec/StubbedMock
|
|
141
|
+
it 'should complete successfully' do # rubocop:disable RSpec/ExampleLength
|
|
135
142
|
messages = (1..4).map do |i|
|
|
136
143
|
Deimos::KafkaMessage.new(
|
|
137
144
|
topic: 'my-topic',
|
|
@@ -196,13 +203,16 @@ each_db_config(Deimos::Utils::OutboxProducer) do
|
|
|
196
203
|
with('my-topic', 'abc').once
|
|
197
204
|
producer.process_topic('my-topic')
|
|
198
205
|
end
|
|
206
|
+
# rubocop:enable RSpec/StubbedMock
|
|
199
207
|
|
|
200
208
|
it 'should register an error if it gets an error' do
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
expect(producer).not_to receive(:produce_messages)
|
|
209
|
+
allow(producer).to receive(:retrieve_messages).and_raise('OH NOES')
|
|
210
|
+
allow(Deimos::KafkaTopicInfo).to receive(:register_error)
|
|
211
|
+
allow(producer).to receive(:produce_messages)
|
|
205
212
|
producer.process_topic('my-topic')
|
|
213
|
+
expect(producer).to have_received(:retrieve_messages)
|
|
214
|
+
expect(Deimos::KafkaTopicInfo).to have_received(:register_error).with('my-topic', 'abc')
|
|
215
|
+
expect(producer).not_to have_received(:produce_messages)
|
|
206
216
|
end
|
|
207
217
|
|
|
208
218
|
it 'should move on if it gets a partial batch' do
|
|
@@ -225,10 +235,9 @@ each_db_config(Deimos::Utils::OutboxProducer) do
|
|
|
225
235
|
)
|
|
226
236
|
end
|
|
227
237
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
expect(producer).to receive(:retrieve_messages).and_return(messages)
|
|
238
|
+
allow(Deimos::KafkaTopicInfo).to receive(:lock).and_return(true)
|
|
239
|
+
allow(producer).to receive(:produce_messages).and_raise('OH NOES')
|
|
240
|
+
allow(producer).to receive(:retrieve_messages).and_return(messages)
|
|
232
241
|
expect(Deimos::KafkaTopicInfo).to receive(:register_error)
|
|
233
242
|
|
|
234
243
|
expect(Deimos::KafkaMessage.count).to eq(4)
|
|
@@ -237,6 +246,9 @@ each_db_config(Deimos::Utils::OutboxProducer) do
|
|
|
237
246
|
expect(event.payload[:messages]).to eq(messages)
|
|
238
247
|
end
|
|
239
248
|
producer.process_topic('my-topic')
|
|
249
|
+
expect(Deimos::KafkaTopicInfo).to have_received(:lock).with('my-topic', 'abc')
|
|
250
|
+
expect(producer).to have_received(:produce_messages)
|
|
251
|
+
expect(producer).to have_received(:retrieve_messages)
|
|
240
252
|
# don't delete for regular errors
|
|
241
253
|
expect(Deimos::KafkaMessage.count).to eq(4)
|
|
242
254
|
Karafka.monitor.notifications_bus.clear('deimos.outbox.produce')
|
|
@@ -269,14 +281,14 @@ each_db_config(Deimos::Utils::OutboxProducer) do
|
|
|
269
281
|
m.call(*args)
|
|
270
282
|
end
|
|
271
283
|
|
|
272
|
-
|
|
273
|
-
with('my-topic', 'abc').and_return(true)
|
|
284
|
+
allow(Deimos::KafkaTopicInfo).to receive(:lock).and_return(true)
|
|
274
285
|
expect(producer).to receive(:retrieve_messages).ordered.and_return(messages)
|
|
275
286
|
expect(producer).to receive(:retrieve_messages).ordered.and_return([])
|
|
276
287
|
expect(Karafka.producer).to receive(:produce_many_sync).once.with(messages.map(&:karafka_message))
|
|
277
288
|
|
|
278
289
|
expect(Deimos::KafkaMessage.count).to eq(8)
|
|
279
290
|
producer.process_topic('my-topic')
|
|
291
|
+
expect(Deimos::KafkaTopicInfo).to have_received(:lock).with('my-topic', 'abc')
|
|
280
292
|
expect(Deimos::KafkaMessage.count).to eq(4)
|
|
281
293
|
end
|
|
282
294
|
|
|
@@ -340,9 +352,9 @@ each_db_config(Deimos::Utils::OutboxProducer) do
|
|
|
340
352
|
end
|
|
341
353
|
|
|
342
354
|
example 'Full integration test' do
|
|
343
|
-
Deimos::KafkaMessage.create!(topic:
|
|
344
|
-
message:
|
|
345
|
-
partition_key:
|
|
355
|
+
Deimos::KafkaMessage.create!(topic: 'topic1',
|
|
356
|
+
message: 'mess1',
|
|
357
|
+
partition_key: 'key1')
|
|
346
358
|
producer.process_next_messages
|
|
347
359
|
expect(Deimos::KafkaTopicInfo.count).to eq(1)
|
|
348
360
|
expect(Deimos::KafkaTopicInfo.first.topic).to eq('topic1')
|
|
@@ -350,7 +362,7 @@ each_db_config(Deimos::Utils::OutboxProducer) do
|
|
|
350
362
|
expect('topic1').to have_sent('mess1')
|
|
351
363
|
end
|
|
352
364
|
|
|
353
|
-
example 'Integration test - batching' do
|
|
365
|
+
example 'Integration test - batching' do # rubocop:disable RSpec/ExampleLength
|
|
354
366
|
(1..4).each do |i|
|
|
355
367
|
(1..2).each do |j|
|
|
356
368
|
Deimos::KafkaMessage.create!(topic: "topic#{j}",
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: deimos-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.2.
|
|
4
|
+
version: 2.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Daniel Orner
|
|
@@ -44,33 +44,33 @@ dependencies:
|
|
|
44
44
|
- !ruby/object:Gem::Version
|
|
45
45
|
version: '0.5'
|
|
46
46
|
- !ruby/object:Gem::Dependency
|
|
47
|
-
name:
|
|
47
|
+
name: fig_tree
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
|
49
49
|
requirements:
|
|
50
50
|
- - "~>"
|
|
51
51
|
- !ruby/object:Gem::Version
|
|
52
|
-
version:
|
|
52
|
+
version: 0.2.0
|
|
53
53
|
type: :runtime
|
|
54
54
|
prerelease: false
|
|
55
55
|
version_requirements: !ruby/object:Gem::Requirement
|
|
56
56
|
requirements:
|
|
57
57
|
- - "~>"
|
|
58
58
|
- !ruby/object:Gem::Version
|
|
59
|
-
version:
|
|
59
|
+
version: 0.2.0
|
|
60
60
|
- !ruby/object:Gem::Dependency
|
|
61
|
-
name:
|
|
61
|
+
name: karafka
|
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
|
63
63
|
requirements:
|
|
64
64
|
- - "~>"
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
|
-
version:
|
|
66
|
+
version: '2.0'
|
|
67
67
|
type: :runtime
|
|
68
68
|
prerelease: false
|
|
69
69
|
version_requirements: !ruby/object:Gem::Requirement
|
|
70
70
|
requirements:
|
|
71
71
|
- - "~>"
|
|
72
72
|
- !ruby/object:Gem::Version
|
|
73
|
-
version:
|
|
73
|
+
version: '2.0'
|
|
74
74
|
- !ruby/object:Gem::Dependency
|
|
75
75
|
name: sigurd
|
|
76
76
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -105,20 +105,6 @@ dependencies:
|
|
|
105
105
|
- - ">="
|
|
106
106
|
- !ruby/object:Gem::Version
|
|
107
107
|
version: '0'
|
|
108
|
-
- !ruby/object:Gem::Dependency
|
|
109
|
-
name: activerecord-trilogy-adapter
|
|
110
|
-
requirement: !ruby/object:Gem::Requirement
|
|
111
|
-
requirements:
|
|
112
|
-
- - ">="
|
|
113
|
-
- !ruby/object:Gem::Version
|
|
114
|
-
version: '0'
|
|
115
|
-
type: :development
|
|
116
|
-
prerelease: false
|
|
117
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
118
|
-
requirements:
|
|
119
|
-
- - ">="
|
|
120
|
-
- !ruby/object:Gem::Version
|
|
121
|
-
version: '0'
|
|
122
108
|
- !ruby/object:Gem::Dependency
|
|
123
109
|
name: avro
|
|
124
110
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -175,20 +161,6 @@ dependencies:
|
|
|
175
161
|
- - ">="
|
|
176
162
|
- !ruby/object:Gem::Version
|
|
177
163
|
version: '4.2'
|
|
178
|
-
- !ruby/object:Gem::Dependency
|
|
179
|
-
name: proto_turf
|
|
180
|
-
requirement: !ruby/object:Gem::Requirement
|
|
181
|
-
requirements:
|
|
182
|
-
- - ">="
|
|
183
|
-
- !ruby/object:Gem::Version
|
|
184
|
-
version: '0'
|
|
185
|
-
type: :development
|
|
186
|
-
prerelease: false
|
|
187
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
188
|
-
requirements:
|
|
189
|
-
- - ">="
|
|
190
|
-
- !ruby/object:Gem::Version
|
|
191
|
-
version: '0'
|
|
192
164
|
- !ruby/object:Gem::Dependency
|
|
193
165
|
name: guard
|
|
194
166
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -246,33 +218,33 @@ dependencies:
|
|
|
246
218
|
- !ruby/object:Gem::Version
|
|
247
219
|
version: '2.0'
|
|
248
220
|
- !ruby/object:Gem::Dependency
|
|
249
|
-
name:
|
|
221
|
+
name: pg
|
|
250
222
|
requirement: !ruby/object:Gem::Requirement
|
|
251
223
|
requirements:
|
|
252
|
-
- - "
|
|
224
|
+
- - "~>"
|
|
253
225
|
- !ruby/object:Gem::Version
|
|
254
|
-
version: '
|
|
226
|
+
version: '1.1'
|
|
255
227
|
type: :development
|
|
256
228
|
prerelease: false
|
|
257
229
|
version_requirements: !ruby/object:Gem::Requirement
|
|
258
230
|
requirements:
|
|
259
|
-
- - "
|
|
231
|
+
- - "~>"
|
|
260
232
|
- !ruby/object:Gem::Version
|
|
261
|
-
version: '
|
|
233
|
+
version: '1.1'
|
|
262
234
|
- !ruby/object:Gem::Dependency
|
|
263
|
-
name:
|
|
235
|
+
name: proto_turf
|
|
264
236
|
requirement: !ruby/object:Gem::Requirement
|
|
265
237
|
requirements:
|
|
266
|
-
- - "
|
|
238
|
+
- - ">="
|
|
267
239
|
- !ruby/object:Gem::Version
|
|
268
|
-
version: '
|
|
240
|
+
version: '0'
|
|
269
241
|
type: :development
|
|
270
242
|
prerelease: false
|
|
271
243
|
version_requirements: !ruby/object:Gem::Requirement
|
|
272
244
|
requirements:
|
|
273
|
-
- - "
|
|
245
|
+
- - ">="
|
|
274
246
|
- !ruby/object:Gem::Version
|
|
275
|
-
version: '
|
|
247
|
+
version: '0'
|
|
276
248
|
- !ruby/object:Gem::Dependency
|
|
277
249
|
name: rails
|
|
278
250
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -361,30 +333,30 @@ dependencies:
|
|
|
361
333
|
name: rubocop
|
|
362
334
|
requirement: !ruby/object:Gem::Requirement
|
|
363
335
|
requirements:
|
|
364
|
-
- -
|
|
336
|
+
- - "~>"
|
|
365
337
|
- !ruby/object:Gem::Version
|
|
366
|
-
version:
|
|
338
|
+
version: '1.0'
|
|
367
339
|
type: :development
|
|
368
340
|
prerelease: false
|
|
369
341
|
version_requirements: !ruby/object:Gem::Requirement
|
|
370
342
|
requirements:
|
|
371
|
-
- -
|
|
343
|
+
- - "~>"
|
|
372
344
|
- !ruby/object:Gem::Version
|
|
373
|
-
version:
|
|
345
|
+
version: '1.0'
|
|
374
346
|
- !ruby/object:Gem::Dependency
|
|
375
347
|
name: rubocop-rspec
|
|
376
348
|
requirement: !ruby/object:Gem::Requirement
|
|
377
349
|
requirements:
|
|
378
350
|
- - '='
|
|
379
351
|
- !ruby/object:Gem::Version
|
|
380
|
-
version:
|
|
352
|
+
version: '3.8'
|
|
381
353
|
type: :development
|
|
382
354
|
prerelease: false
|
|
383
355
|
version_requirements: !ruby/object:Gem::Requirement
|
|
384
356
|
requirements:
|
|
385
357
|
- - '='
|
|
386
358
|
- !ruby/object:Gem::Version
|
|
387
|
-
version:
|
|
359
|
+
version: '3.8'
|
|
388
360
|
- !ruby/object:Gem::Dependency
|
|
389
361
|
name: sord
|
|
390
362
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -427,6 +399,48 @@ dependencies:
|
|
|
427
399
|
- - "~>"
|
|
428
400
|
- !ruby/object:Gem::Version
|
|
429
401
|
version: '1.0'
|
|
402
|
+
- !ruby/object:Gem::Dependency
|
|
403
|
+
name: trilogy
|
|
404
|
+
requirement: !ruby/object:Gem::Requirement
|
|
405
|
+
requirements:
|
|
406
|
+
- - ">="
|
|
407
|
+
- !ruby/object:Gem::Version
|
|
408
|
+
version: '0.1'
|
|
409
|
+
type: :development
|
|
410
|
+
prerelease: false
|
|
411
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
412
|
+
requirements:
|
|
413
|
+
- - ">="
|
|
414
|
+
- !ruby/object:Gem::Version
|
|
415
|
+
version: '0.1'
|
|
416
|
+
- !ruby/object:Gem::Dependency
|
|
417
|
+
name: bigdecimal
|
|
418
|
+
requirement: !ruby/object:Gem::Requirement
|
|
419
|
+
requirements:
|
|
420
|
+
- - ">="
|
|
421
|
+
- !ruby/object:Gem::Version
|
|
422
|
+
version: '0'
|
|
423
|
+
type: :development
|
|
424
|
+
prerelease: false
|
|
425
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
426
|
+
requirements:
|
|
427
|
+
- - ">="
|
|
428
|
+
- !ruby/object:Gem::Version
|
|
429
|
+
version: '0'
|
|
430
|
+
- !ruby/object:Gem::Dependency
|
|
431
|
+
name: mutex_m
|
|
432
|
+
requirement: !ruby/object:Gem::Requirement
|
|
433
|
+
requirements:
|
|
434
|
+
- - ">="
|
|
435
|
+
- !ruby/object:Gem::Version
|
|
436
|
+
version: '0'
|
|
437
|
+
type: :development
|
|
438
|
+
prerelease: false
|
|
439
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
440
|
+
requirements:
|
|
441
|
+
- - ">="
|
|
442
|
+
- !ruby/object:Gem::Version
|
|
443
|
+
version: '0'
|
|
430
444
|
email:
|
|
431
445
|
- daniel.orner@wishabi.com
|
|
432
446
|
executables:
|
|
@@ -442,7 +456,6 @@ files:
|
|
|
442
456
|
- ".rspec"
|
|
443
457
|
- ".rubocop.yml"
|
|
444
458
|
- ".rubocop_todo.yml"
|
|
445
|
-
- ".ruby-version"
|
|
446
459
|
- ".tool-versions"
|
|
447
460
|
- CHANGELOG.md
|
|
448
461
|
- CODE_OF_CONDUCT.md
|
|
@@ -669,7 +682,8 @@ files:
|
|
|
669
682
|
homepage: ''
|
|
670
683
|
licenses:
|
|
671
684
|
- Apache-2.0
|
|
672
|
-
metadata:
|
|
685
|
+
metadata:
|
|
686
|
+
rubygems_mfa_required: 'true'
|
|
673
687
|
rdoc_options: []
|
|
674
688
|
require_paths:
|
|
675
689
|
- lib
|
|
@@ -687,111 +701,4 @@ requirements: []
|
|
|
687
701
|
rubygems_version: 3.6.9
|
|
688
702
|
specification_version: 4
|
|
689
703
|
summary: Kafka libraries for Ruby.
|
|
690
|
-
test_files:
|
|
691
|
-
- spec/active_record_batch_consumer_association_spec.rb
|
|
692
|
-
- spec/active_record_batch_consumer_spec.rb
|
|
693
|
-
- spec/active_record_consume/batch_consumption_spec.rb
|
|
694
|
-
- spec/active_record_consume/batch_slicer_spec.rb
|
|
695
|
-
- spec/active_record_consume/mass_updater_spec.rb
|
|
696
|
-
- spec/active_record_consume/schema_model_converter_spec.rb
|
|
697
|
-
- spec/active_record_consumer_spec.rb
|
|
698
|
-
- spec/active_record_producer_spec.rb
|
|
699
|
-
- spec/backends/base_spec.rb
|
|
700
|
-
- spec/backends/kafka_async_spec.rb
|
|
701
|
-
- spec/backends/kafka_spec.rb
|
|
702
|
-
- spec/backends/outbox_spec.rb
|
|
703
|
-
- spec/batch_consumer_spec.rb
|
|
704
|
-
- spec/consumer_spec.rb
|
|
705
|
-
- spec/deimos_spec.rb
|
|
706
|
-
- spec/gen/sample/v1/sample_pb.rb
|
|
707
|
-
- spec/generators/active_record_generator_spec.rb
|
|
708
|
-
- spec/generators/schema_class/my_schema_spec.rb
|
|
709
|
-
- spec/generators/schema_class/my_schema_with_circular_reference_spec.rb
|
|
710
|
-
- spec/generators/schema_class/my_schema_with_complex_types_spec.rb
|
|
711
|
-
- spec/generators/schema_class_generator_spec.rb
|
|
712
|
-
- spec/handlers/my_batch_consumer.rb
|
|
713
|
-
- spec/handlers/my_consumer.rb
|
|
714
|
-
- spec/kafka_source_spec.rb
|
|
715
|
-
- spec/kafka_topic_info_spec.rb
|
|
716
|
-
- spec/karafka/karafka.rb
|
|
717
|
-
- spec/karafka_config/karafka_spec.rb
|
|
718
|
-
- spec/logging_spec.rb
|
|
719
|
-
- spec/message_spec.rb
|
|
720
|
-
- spec/producer_spec.rb
|
|
721
|
-
- spec/protos/sample/v1/sample.proto
|
|
722
|
-
- spec/rake_spec.rb
|
|
723
|
-
- spec/schema_backends/avro_base_shared.rb
|
|
724
|
-
- spec/schema_backends/avro_local_spec.rb
|
|
725
|
-
- spec/schema_backends/avro_schema_registry_spec.rb
|
|
726
|
-
- spec/schema_backends/avro_validation_spec.rb
|
|
727
|
-
- spec/schema_backends/base_spec.rb
|
|
728
|
-
- spec/schema_backends/proto_schema_registry_spec.rb
|
|
729
|
-
- spec/schemas/com/my-namespace/Generated.avsc
|
|
730
|
-
- spec/schemas/com/my-namespace/MyNestedSchema.avsc
|
|
731
|
-
- spec/schemas/com/my-namespace/MySchema.avsc
|
|
732
|
-
- spec/schemas/com/my-namespace/MySchemaCompound_key.avsc
|
|
733
|
-
- spec/schemas/com/my-namespace/MySchemaId_key.avsc
|
|
734
|
-
- spec/schemas/com/my-namespace/MySchemaWithBooleans.avsc
|
|
735
|
-
- spec/schemas/com/my-namespace/MySchemaWithCircularReference.avsc
|
|
736
|
-
- spec/schemas/com/my-namespace/MySchemaWithComplexTypes.avsc
|
|
737
|
-
- spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc
|
|
738
|
-
- spec/schemas/com/my-namespace/MySchemaWithId.avsc
|
|
739
|
-
- spec/schemas/com/my-namespace/MySchemaWithTitle.avsc
|
|
740
|
-
- spec/schemas/com/my-namespace/MySchemaWithUnionType.avsc
|
|
741
|
-
- spec/schemas/com/my-namespace/MySchemaWithUniqueId.avsc
|
|
742
|
-
- spec/schemas/com/my-namespace/MySchema_key.avsc
|
|
743
|
-
- spec/schemas/com/my-namespace/Wibble.avsc
|
|
744
|
-
- spec/schemas/com/my-namespace/Widget.avsc
|
|
745
|
-
- spec/schemas/com/my-namespace/WidgetTheSecond.avsc
|
|
746
|
-
- spec/schemas/com/my-namespace/WidgetTheThird.avsc
|
|
747
|
-
- spec/schemas/com/my-namespace/my-suborg/MyLongNamespaceSchema.avsc
|
|
748
|
-
- spec/schemas/com/my-namespace/request/CreateTopic.avsc
|
|
749
|
-
- spec/schemas/com/my-namespace/request/Index.avsc
|
|
750
|
-
- spec/schemas/com/my-namespace/request/UpdateRequest.avsc
|
|
751
|
-
- spec/schemas/com/my-namespace/response/CreateTopic.avsc
|
|
752
|
-
- spec/schemas/com/my-namespace/response/Index.avsc
|
|
753
|
-
- spec/schemas/com/my-namespace/response/UpdateResponse.avsc
|
|
754
|
-
- spec/schemas/my_namespace/generated.rb
|
|
755
|
-
- spec/schemas/my_namespace/my_long_namespace_schema.rb
|
|
756
|
-
- spec/schemas/my_namespace/my_nested_schema.rb
|
|
757
|
-
- spec/schemas/my_namespace/my_schema.rb
|
|
758
|
-
- spec/schemas/my_namespace/my_schema_compound_key.rb
|
|
759
|
-
- spec/schemas/my_namespace/my_schema_id_key.rb
|
|
760
|
-
- spec/schemas/my_namespace/my_schema_key.rb
|
|
761
|
-
- spec/schemas/my_namespace/my_schema_with_boolean.rb
|
|
762
|
-
- spec/schemas/my_namespace/my_schema_with_circular_reference.rb
|
|
763
|
-
- spec/schemas/my_namespace/my_schema_with_complex_type.rb
|
|
764
|
-
- spec/schemas/my_namespace/my_schema_with_date_time.rb
|
|
765
|
-
- spec/schemas/my_namespace/my_schema_with_id.rb
|
|
766
|
-
- spec/schemas/my_namespace/my_schema_with_title.rb
|
|
767
|
-
- spec/schemas/my_namespace/my_schema_with_union_type.rb
|
|
768
|
-
- spec/schemas/my_namespace/my_schema_with_unique_id.rb
|
|
769
|
-
- spec/schemas/my_namespace/my_updated_schema.rb
|
|
770
|
-
- spec/schemas/my_namespace/request/create_topic.rb
|
|
771
|
-
- spec/schemas/my_namespace/request/index.rb
|
|
772
|
-
- spec/schemas/my_namespace/request/update_request.rb
|
|
773
|
-
- spec/schemas/my_namespace/response/create_topic.rb
|
|
774
|
-
- spec/schemas/my_namespace/response/index.rb
|
|
775
|
-
- spec/schemas/my_namespace/response/update_response.rb
|
|
776
|
-
- spec/schemas/my_namespace/wibble.rb
|
|
777
|
-
- spec/schemas/my_namespace/widget.rb
|
|
778
|
-
- spec/schemas/my_namespace/widget_the_second.rb
|
|
779
|
-
- spec/schemas/my_namespace/widget_the_third.rb
|
|
780
|
-
- spec/snapshots/consumers-no-nest.snap
|
|
781
|
-
- spec/snapshots/consumers.snap
|
|
782
|
-
- spec/snapshots/consumers_and_producers-no-nest.snap
|
|
783
|
-
- spec/snapshots/consumers_and_producers.snap
|
|
784
|
-
- spec/snapshots/consumers_circular-no-nest.snap
|
|
785
|
-
- spec/snapshots/consumers_circular.snap
|
|
786
|
-
- spec/snapshots/consumers_complex_types-no-nest.snap
|
|
787
|
-
- spec/snapshots/consumers_complex_types.snap
|
|
788
|
-
- spec/snapshots/consumers_nested-no-nest.snap
|
|
789
|
-
- spec/snapshots/consumers_nested.snap
|
|
790
|
-
- spec/snapshots/namespace_folders.snap
|
|
791
|
-
- spec/snapshots/namespace_map.snap
|
|
792
|
-
- spec/snapshots/producers_with_key-no-nest.snap
|
|
793
|
-
- spec/snapshots/producers_with_key.snap
|
|
794
|
-
- spec/spec_helper.rb
|
|
795
|
-
- spec/utils/db_poller_spec.rb
|
|
796
|
-
- spec/utils/deadlock_retry_spec.rb
|
|
797
|
-
- spec/utils/outbox_producer_spec.rb
|
|
704
|
+
test_files: []
|
data/.ruby-version
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3.2.2
|