deimos-ruby 1.12.4 → 1.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/.gemfiles/avro_turf-0.gemfile +3 -0
  3. data/.gemfiles/avro_turf-1.gemfile +3 -0
  4. data/.github/workflows/ci.yml +49 -0
  5. data/.gitignore +2 -1
  6. data/CHANGELOG.md +16 -0
  7. data/README.md +3 -3
  8. data/bin/console +15 -0
  9. data/deimos-ruby.gemspec +1 -1
  10. data/docs/CONFIGURATION.md +15 -1
  11. data/lib/deimos/config/configuration.rb +62 -2
  12. data/lib/deimos/config/phobos_config.rb +24 -0
  13. data/lib/deimos/metrics/datadog.rb +1 -1
  14. data/lib/deimos/schema_backends/avro_schema_registry.rb +4 -1
  15. data/lib/deimos/version.rb +1 -1
  16. data/lib/generators/deimos/schema_class_generator.rb +27 -1
  17. data/spec/active_record_batch_consumer_spec.rb +1 -1
  18. data/spec/active_record_consumer_spec.rb +6 -6
  19. data/spec/active_record_producer_spec.rb +1 -1
  20. data/spec/config/configuration_spec.rb +25 -1
  21. data/spec/consumer_spec.rb +17 -17
  22. data/spec/generators/schema_class/my_schema_with_complex_types_spec.rb +3 -2
  23. data/spec/generators/schema_class_generator_spec.rb +2 -2
  24. data/spec/producer_spec.rb +24 -24
  25. data/spec/schema_backends/avro_base_shared.rb +2 -2
  26. data/spec/schema_classes/my_schema_key.rb +2 -2
  27. data/spec/schema_classes/my_schema_with_complex_types.rb +34 -2
  28. data/spec/schemas/com/my-namespace/{MySchemaCompound-key.avsc → MySchemaCompound_key.avsc} +1 -1
  29. data/spec/schemas/com/my-namespace/MySchemaWithComplexTypes.avsc +11 -0
  30. data/spec/schemas/com/my-namespace/{MySchema-key.avsc → MySchema_key.avsc} +1 -1
  31. data/spec/utils/inline_consumer_spec.rb +2 -2
  32. metadata +19 -9
  33. data/Gemfile.lock +0 -292
@@ -81,7 +81,7 @@ RSpec.describe Deimos::Generators::SchemaClassGenerator do
81
81
  topic 'MyTopic'
82
82
  schema 'MySchema'
83
83
  namespace 'com.my-namespace'
84
- key_config schema: 'MySchema-key'
84
+ key_config schema: 'MySchema_key'
85
85
  end
86
86
  end
87
87
  described_class.start
@@ -143,7 +143,7 @@ RSpec.describe Deimos::Generators::SchemaClassGenerator do
143
143
  topic 'MyTopic'
144
144
  schema 'MySchema'
145
145
  namespace 'com.my-namespace'
146
- key_config schema: 'MySchema-key'
146
+ key_config schema: 'MySchema_key'
147
147
  end
148
148
 
149
149
  producer do
@@ -53,7 +53,7 @@ module ProducerTest
53
53
  schema 'MySchema'
54
54
  namespace 'com.my-namespace'
55
55
  topic 'my-topic2'
56
- key_config schema: 'MySchema-key'
56
+ key_config schema: 'MySchema_key'
57
57
  end
58
58
  stub_const('MySchemaProducer', producer_class)
59
59
 
@@ -79,7 +79,7 @@ module ProducerTest
79
79
  expect(event.payload[:payloads]).to eq([{ 'invalid' => 'key' }])
80
80
  end
81
81
  expect(MyProducer.encoder).to receive(:validate).and_raise('OH NOES')
82
- expect { MyProducer.publish('invalid' => 'key', :payload_key => 'key') }.
82
+ expect { MyProducer.publish({'invalid' => 'key', :payload_key => 'key'}) }.
83
83
  to raise_error('OH NOES')
84
84
  Deimos.unsubscribe(subscriber)
85
85
  end
@@ -294,7 +294,7 @@ module ProducerTest
294
294
 
295
295
  it 'should properly encode and coerce values with a nested record' do
296
296
  expect(MyNestedSchemaProducer.encoder).to receive(:encode_key).with('test_id', 'foo', topic: 'my-topic-key')
297
- MyNestedSchemaProducer.publish(
297
+ MyNestedSchemaProducer.publish({
298
298
  'test_id' => 'foo',
299
299
  'test_float' => BigDecimal('123.456'),
300
300
  'test_array' => ['1'],
@@ -305,7 +305,7 @@ module ProducerTest
305
305
  'some_optional_int' => nil
306
306
  },
307
307
  'some_optional_record' => nil
308
- )
308
+ })
309
309
  expect(MyNestedSchemaProducer.topic).to have_sent(
310
310
  'test_id' => 'foo',
311
311
  'test_float' => 123.456,
@@ -504,23 +504,23 @@ module ProducerTest
504
504
  it 'should disable globally' do
505
505
  Deimos.disable_producers do
506
506
  Deimos.disable_producers do # test nested
507
- MyProducer.publish(
507
+ MyProducer.publish({
508
508
  'test_id' => 'foo',
509
509
  'some_int' => 123,
510
510
  :payload_key => '123'
511
- )
512
- MyProducerWithID.publish(
511
+ })
512
+ MyProducerWithID.publish({
513
513
  'test_id' => 'foo', 'some_int' => 123
514
- )
514
+ })
515
515
  expect('my-topic').not_to have_sent(anything)
516
516
  expect(Deimos).to be_producers_disabled
517
517
  expect(Deimos).to be_producers_disabled([MyProducer])
518
518
  end
519
519
  end
520
520
 
521
- MyProducerWithID.publish(
521
+ MyProducerWithID.publish({
522
522
  'test_id' => 'foo', 'some_int' => 123, :payload_key => 123
523
- )
523
+ })
524
524
  expect('my-topic').
525
525
  to have_sent('test_id' => 'foo', 'some_int' => 123,
526
526
  'message_id' => anything, 'timestamp' => anything)
@@ -531,15 +531,15 @@ module ProducerTest
531
531
  it 'should disable a single producer' do
532
532
  Deimos.disable_producers(MyProducer) do # test nested
533
533
  Deimos.disable_producers(MyProducer) do
534
- MySchemaProducer.publish(
535
- 'test_id' => 'foo', 'some_int' => 123,
536
- :payload_key => { 'test_id' => 'foo_key' }
537
- )
538
- MyProducer.publish(
539
- 'test_id' => 'foo',
540
- 'some_int' => 123,
541
- :payload_key => '123'
542
- )
534
+ MySchemaProducer.publish({
535
+ 'test_id' => 'foo', 'some_int' => 123,
536
+ :payload_key => { 'test_id' => 'foo_key' }
537
+ })
538
+ MyProducer.publish({
539
+ 'test_id' => 'foo',
540
+ 'some_int' => 123,
541
+ :payload_key => '123'
542
+ })
543
543
  expect('my-topic').not_to have_sent(anything)
544
544
  expect('my-topic2').to have_sent('test_id' => 'foo', 'some_int' => 123)
545
545
  expect(Deimos).not_to be_producers_disabled
@@ -550,11 +550,11 @@ module ProducerTest
550
550
  expect(Deimos).not_to be_producers_disabled
551
551
  expect(Deimos).not_to be_producers_disabled(MyProducer)
552
552
  expect(Deimos).not_to be_producers_disabled(MySchemaProducer)
553
- MyProducer.publish(
554
- 'test_id' => 'foo',
555
- 'some_int' => 123,
556
- :payload_key => '123'
557
- )
553
+ MyProducer.publish({
554
+ 'test_id' => 'foo',
555
+ 'some_int' => 123,
556
+ :payload_key => '123'
557
+ })
558
558
  expect('my-topic').
559
559
  to have_sent('test_id' => 'foo', 'some_int' => 123)
560
560
  end
@@ -87,13 +87,13 @@ RSpec.shared_examples_for('an Avro backend') do
87
87
  describe('#validate') do
88
88
  it 'should pass valid schemas' do
89
89
  expect {
90
- backend.validate({ 'test_id' => 'hi', 'some_int' => 4 }, { schema: 'MySchema' })
90
+ backend.validate({ 'test_id' => 'hi', 'some_int' => 4 }, schema: 'MySchema')
91
91
  }.not_to raise_error
92
92
  end
93
93
 
94
94
  it 'should fail invalid schemas' do
95
95
  expect {
96
- backend.validate({ 'test_id2' => 'hi', 'some_int' => 4 }, { schema: 'MySchema' })
96
+ backend.validate({ 'test_id2' => 'hi', 'some_int' => 4 }, schema: 'MySchema')
97
97
  }.to raise_error(Avro::SchemaValidator::ValidationError)
98
98
  end
99
99
 
@@ -3,7 +3,7 @@
3
3
  # This file is autogenerated by Deimos, Do NOT modify
4
4
  module Schemas
5
5
  ### Primary Schema Class ###
6
- # Autogenerated Schema for Record at com.my-namespace.MySchema-key
6
+ # Autogenerated Schema for Record at com.my-namespace.MySchema_key
7
7
  class MySchemaKey < Deimos::SchemaClass::Record
8
8
  ### Attribute Accessors ###
9
9
  # @param value [String]
@@ -17,7 +17,7 @@ module Schemas
17
17
 
18
18
  # @override
19
19
  def schema
20
- 'MySchema-key'
20
+ 'MySchema_key'
21
21
  end
22
22
 
23
23
  # @override
@@ -55,6 +55,28 @@ module Schemas
55
55
  end
56
56
  end
57
57
 
58
+ # Autogenerated Schema for Enum at com.my-namespace.AnotherEnum
59
+ class AnotherEnum < Deimos::SchemaClass::Enum
60
+ # @return ['sym3', 'sym4']
61
+ attr_accessor :another_enum
62
+
63
+ # :nodoc:
64
+ def initialize(another_enum)
65
+ super
66
+ self.another_enum = another_enum
67
+ end
68
+
69
+ # @override
70
+ def symbols
71
+ %w(sym3 sym4)
72
+ end
73
+
74
+ # @override
75
+ def to_h
76
+ @another_enum
77
+ end
78
+ end
79
+
58
80
  ### Primary Schema Class ###
59
81
  # Autogenerated Schema for Record at com.my-namespace.MySchemaWithComplexTypes
60
82
  class MySchemaWithComplexTypes < Deimos::SchemaClass::Record
@@ -69,6 +91,8 @@ module Schemas
69
91
  attr_reader :some_record_map
70
92
  # @return [Array<AnEnum>]
71
93
  attr_reader :some_enum_array
94
+ # @return [nil, AnotherEnum]
95
+ attr_reader :some_optional_enum
72
96
 
73
97
  ### Attribute Accessors ###
74
98
  # @param value [String]
@@ -116,6 +140,11 @@ module Schemas
116
140
  end
117
141
  end
118
142
 
143
+ # @param value [nil, AnotherEnum]
144
+ def some_optional_enum=(value)
145
+ @some_optional_enum = AnotherEnum.initialize_from_value(value)
146
+ end
147
+
119
148
  # @override
120
149
  def initialize(test_id: nil,
121
150
  test_float: nil,
@@ -127,7 +156,8 @@ module Schemas
127
156
  some_optional_record: nil,
128
157
  some_record_array: nil,
129
158
  some_record_map: nil,
130
- some_enum_array: nil)
159
+ some_enum_array: nil,
160
+ some_optional_enum: nil)
131
161
  super
132
162
  self.test_id = test_id
133
163
  self.test_float = test_float
@@ -140,6 +170,7 @@ module Schemas
140
170
  self.some_record_array = some_record_array
141
171
  self.some_record_map = some_record_map
142
172
  self.some_enum_array = some_enum_array
173
+ self.some_optional_enum = some_optional_enum
143
174
  end
144
175
 
145
176
  # @override
@@ -165,7 +196,8 @@ module Schemas
165
196
  'some_optional_record' => @some_optional_record&.to_h,
166
197
  'some_record_array' => @some_record_array.map { |v| v&.to_h },
167
198
  'some_record_map' => @some_record_map.transform_values { |v| v&.to_h },
168
- 'some_enum_array' => @some_enum_array.map { |v| v&.to_h }
199
+ 'some_enum_array' => @some_enum_array.map { |v| v&.to_h },
200
+ 'some_optional_enum' => @some_optional_enum&.to_h
169
201
  }
170
202
  end
171
203
  end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "namespace": "com.my-namespace",
3
- "name": "MySchemaCompound-key",
3
+ "name": "MySchemaCompound_key",
4
4
  "type": "record",
5
5
  "doc": "Test schema",
6
6
  "fields": [
@@ -90,6 +90,17 @@
90
90
  "symbols": ["sym1", "sym2"]
91
91
  }
92
92
  }
93
+ },
94
+ {
95
+ "name": "some_optional_enum",
96
+ "type": [
97
+ "null",
98
+ {
99
+ "type": "enum",
100
+ "name": "AnotherEnum",
101
+ "symbols": ["sym3", "sym4"]
102
+ }
103
+ ]
93
104
  }
94
105
  ]
95
106
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "namespace": "com.my-namespace",
3
- "name": "MySchema-key",
3
+ "name": "MySchema_key",
4
4
  "type": "record",
5
5
  "doc": "Test schema",
6
6
  "fields": [
@@ -17,14 +17,14 @@ describe Deimos::Utils::SeekListener do
17
17
  it 'should seek offset' do
18
18
  allow(consumer).to receive(:seek)
19
19
  expect(consumer).to receive(:seek).once
20
- seek_listener = described_class.new({ handler: handler, group_id: 999, topic: 'test_topic' })
20
+ seek_listener = described_class.new(handler: handler, group_id: 999, topic: 'test_topic')
21
21
  seek_listener.start_listener
22
22
  end
23
23
 
24
24
  it 'should retry on errors when seeking offset' do
25
25
  allow(consumer).to receive(:seek).and_raise(StandardError)
26
26
  expect(consumer).to receive(:seek).twice
27
- seek_listener = described_class.new({ handler: handler, group_id: 999, topic: 'test_topic' })
27
+ seek_listener = described_class.new(handler: handler, group_id: 999, topic: 'test_topic')
28
28
  seek_listener.start_listener
29
29
  end
30
30
  end
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deimos-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.4
4
+ version: 1.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Orner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-13 00:00:00.000000000 Z
11
+ date: 2022-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avro_turf
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.11'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '2'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0.11'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '2'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: phobos
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -342,11 +348,15 @@ description:
342
348
  email:
343
349
  - daniel.orner@wishabi.com
344
350
  executables:
351
+ - console
345
352
  - deimos
346
353
  extensions: []
347
354
  extra_rdoc_files: []
348
355
  files:
349
356
  - ".circleci/config.yml"
357
+ - ".gemfiles/avro_turf-0.gemfile"
358
+ - ".gemfiles/avro_turf-1.gemfile"
359
+ - ".github/workflows/ci.yml"
350
360
  - ".gitignore"
351
361
  - ".gitmodules"
352
362
  - ".rspec"
@@ -357,11 +367,11 @@ files:
357
367
  - CODE_OF_CONDUCT.md
358
368
  - Dockerfile
359
369
  - Gemfile
360
- - Gemfile.lock
361
370
  - Guardfile
362
371
  - LICENSE.md
363
372
  - README.md
364
373
  - Rakefile
374
+ - bin/console
365
375
  - bin/deimos
366
376
  - deimos-ruby.gemspec
367
377
  - docker-compose.yml
@@ -477,14 +487,14 @@ files:
477
487
  - spec/schema_classes/my_schema_with_complex_types.rb
478
488
  - spec/schemas/com/my-namespace/Generated.avsc
479
489
  - spec/schemas/com/my-namespace/MyNestedSchema.avsc
480
- - spec/schemas/com/my-namespace/MySchema-key.avsc
481
490
  - spec/schemas/com/my-namespace/MySchema.avsc
482
- - spec/schemas/com/my-namespace/MySchemaCompound-key.avsc
491
+ - spec/schemas/com/my-namespace/MySchemaCompound_key.avsc
483
492
  - spec/schemas/com/my-namespace/MySchemaWithBooleans.avsc
484
493
  - spec/schemas/com/my-namespace/MySchemaWithComplexTypes.avsc
485
494
  - spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc
486
495
  - spec/schemas/com/my-namespace/MySchemaWithId.avsc
487
496
  - spec/schemas/com/my-namespace/MySchemaWithUniqueId.avsc
497
+ - spec/schemas/com/my-namespace/MySchema_key.avsc
488
498
  - spec/schemas/com/my-namespace/Wibble.avsc
489
499
  - spec/schemas/com/my-namespace/Widget.avsc
490
500
  - spec/schemas/com/my-namespace/WidgetTheSecond.avsc
@@ -568,14 +578,14 @@ test_files:
568
578
  - spec/schema_classes/my_schema_with_complex_types.rb
569
579
  - spec/schemas/com/my-namespace/Generated.avsc
570
580
  - spec/schemas/com/my-namespace/MyNestedSchema.avsc
571
- - spec/schemas/com/my-namespace/MySchema-key.avsc
572
581
  - spec/schemas/com/my-namespace/MySchema.avsc
573
- - spec/schemas/com/my-namespace/MySchemaCompound-key.avsc
582
+ - spec/schemas/com/my-namespace/MySchemaCompound_key.avsc
574
583
  - spec/schemas/com/my-namespace/MySchemaWithBooleans.avsc
575
584
  - spec/schemas/com/my-namespace/MySchemaWithComplexTypes.avsc
576
585
  - spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc
577
586
  - spec/schemas/com/my-namespace/MySchemaWithId.avsc
578
587
  - spec/schemas/com/my-namespace/MySchemaWithUniqueId.avsc
588
+ - spec/schemas/com/my-namespace/MySchema_key.avsc
579
589
  - spec/schemas/com/my-namespace/Wibble.avsc
580
590
  - spec/schemas/com/my-namespace/Widget.avsc
581
591
  - spec/schemas/com/my-namespace/WidgetTheSecond.avsc
data/Gemfile.lock DELETED
@@ -1,292 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- deimos-ruby (1.12.3)
5
- avro_turf (~> 0.11)
6
- fig_tree (~> 0.0.2)
7
- phobos (>= 1.9, < 3.0)
8
- ruby-kafka (< 2)
9
- sigurd (~> 0.0.1)
10
-
11
- GEM
12
- remote: https://rubygems.org/
13
- specs:
14
- actioncable (6.1.3)
15
- actionpack (= 6.1.3)
16
- activesupport (= 6.1.3)
17
- nio4r (~> 2.0)
18
- websocket-driver (>= 0.6.1)
19
- actionmailbox (6.1.3)
20
- actionpack (= 6.1.3)
21
- activejob (= 6.1.3)
22
- activerecord (= 6.1.3)
23
- activestorage (= 6.1.3)
24
- activesupport (= 6.1.3)
25
- mail (>= 2.7.1)
26
- actionmailer (6.1.3)
27
- actionpack (= 6.1.3)
28
- actionview (= 6.1.3)
29
- activejob (= 6.1.3)
30
- activesupport (= 6.1.3)
31
- mail (~> 2.5, >= 2.5.4)
32
- rails-dom-testing (~> 2.0)
33
- actionpack (6.1.3)
34
- actionview (= 6.1.3)
35
- activesupport (= 6.1.3)
36
- rack (~> 2.0, >= 2.0.9)
37
- rack-test (>= 0.6.3)
38
- rails-dom-testing (~> 2.0)
39
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
40
- actiontext (6.1.3)
41
- actionpack (= 6.1.3)
42
- activerecord (= 6.1.3)
43
- activestorage (= 6.1.3)
44
- activesupport (= 6.1.3)
45
- nokogiri (>= 1.8.5)
46
- actionview (6.1.3)
47
- activesupport (= 6.1.3)
48
- builder (~> 3.1)
49
- erubi (~> 1.4)
50
- rails-dom-testing (~> 2.0)
51
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
52
- activejob (6.1.3)
53
- activesupport (= 6.1.3)
54
- globalid (>= 0.3.6)
55
- activemodel (6.1.3)
56
- activesupport (= 6.1.3)
57
- activerecord (6.1.3)
58
- activemodel (= 6.1.3)
59
- activesupport (= 6.1.3)
60
- activerecord-import (1.0.8)
61
- activerecord (>= 3.2)
62
- activestorage (6.1.3)
63
- actionpack (= 6.1.3)
64
- activejob (= 6.1.3)
65
- activerecord (= 6.1.3)
66
- activesupport (= 6.1.3)
67
- marcel (~> 0.3.1)
68
- mimemagic (~> 0.3.2)
69
- activesupport (6.1.3)
70
- concurrent-ruby (~> 1.0, >= 1.0.2)
71
- i18n (>= 1.6, < 2)
72
- minitest (>= 5.1)
73
- tzinfo (~> 2.0)
74
- zeitwerk (~> 2.3)
75
- ast (2.4.2)
76
- avro (1.9.2)
77
- multi_json
78
- avro_turf (0.11.0)
79
- avro (>= 1.7.7, < 1.10)
80
- excon (~> 0.45)
81
- builder (3.2.4)
82
- coderay (1.1.3)
83
- concurrent-ruby (1.1.8)
84
- concurrent-ruby-ext (1.1.8)
85
- concurrent-ruby (= 1.1.8)
86
- crass (1.0.6)
87
- database_cleaner (1.99.0)
88
- ddtrace (0.46.0)
89
- msgpack
90
- diff-lcs (1.4.4)
91
- digest-crc (0.6.4)
92
- rake (>= 12.0.0, < 14.0.0)
93
- dogstatsd-ruby (4.8.3)
94
- erubi (1.10.0)
95
- excon (0.89.0)
96
- exponential-backoff (0.0.4)
97
- ffi (1.15.0)
98
- fig_tree (0.0.2)
99
- activesupport (>= 3.0.0)
100
- formatador (0.2.5)
101
- globalid (0.4.2)
102
- activesupport (>= 4.2.0)
103
- guard (2.16.2)
104
- formatador (>= 0.2.4)
105
- listen (>= 2.7, < 4.0)
106
- lumberjack (>= 1.0.12, < 2.0)
107
- nenv (~> 0.1)
108
- notiffany (~> 0.0)
109
- pry (>= 0.9.12)
110
- shellany (~> 0.0)
111
- thor (>= 0.18.1)
112
- guard-compat (1.2.1)
113
- guard-rspec (4.7.3)
114
- guard (~> 2.1)
115
- guard-compat (~> 1.1)
116
- rspec (>= 2.99.0, < 4.0)
117
- guard-rubocop (1.4.0)
118
- guard (~> 2.0)
119
- rubocop (< 2.0)
120
- i18n (1.8.9)
121
- concurrent-ruby (~> 1.0)
122
- listen (3.4.1)
123
- rb-fsevent (~> 0.10, >= 0.10.3)
124
- rb-inotify (~> 0.9, >= 0.9.10)
125
- little-plugger (1.1.4)
126
- logging (2.3.0)
127
- little-plugger (~> 1.1)
128
- multi_json (~> 1.14)
129
- loofah (2.9.0)
130
- crass (~> 1.0.2)
131
- nokogiri (>= 1.5.9)
132
- lumberjack (1.2.8)
133
- mail (2.7.1)
134
- mini_mime (>= 0.1.1)
135
- marcel (0.3.3)
136
- mimemagic (~> 0.3.2)
137
- method_source (1.0.0)
138
- mimemagic (0.3.10)
139
- nokogiri (~> 1)
140
- rake
141
- mini_mime (1.0.2)
142
- mini_portile2 (2.5.1)
143
- minitest (5.14.4)
144
- msgpack (1.4.2)
145
- multi_json (1.15.0)
146
- mysql2 (0.5.3)
147
- nenv (0.3.0)
148
- nio4r (2.5.7)
149
- nokogiri (1.11.5)
150
- mini_portile2 (~> 2.5.0)
151
- racc (~> 1.4)
152
- notiffany (0.1.3)
153
- nenv (~> 0.1)
154
- shellany (~> 0.0)
155
- parallel (1.20.1)
156
- parser (3.0.1.1)
157
- ast (~> 2.4.1)
158
- pg (1.2.3)
159
- phobos (2.1.0)
160
- activesupport (>= 3.0.0)
161
- concurrent-ruby (>= 1.0.2)
162
- concurrent-ruby-ext (>= 1.0.2)
163
- exponential-backoff
164
- logging
165
- ruby-kafka
166
- thor
167
- pry (0.14.0)
168
- coderay (~> 1.1)
169
- method_source (~> 1.0)
170
- racc (1.5.2)
171
- rack (2.2.3)
172
- rack-test (1.1.0)
173
- rack (>= 1.0, < 3)
174
- rails (6.1.3)
175
- actioncable (= 6.1.3)
176
- actionmailbox (= 6.1.3)
177
- actionmailer (= 6.1.3)
178
- actionpack (= 6.1.3)
179
- actiontext (= 6.1.3)
180
- actionview (= 6.1.3)
181
- activejob (= 6.1.3)
182
- activemodel (= 6.1.3)
183
- activerecord (= 6.1.3)
184
- activestorage (= 6.1.3)
185
- activesupport (= 6.1.3)
186
- bundler (>= 1.15.0)
187
- railties (= 6.1.3)
188
- sprockets-rails (>= 2.0.0)
189
- rails-dom-testing (2.0.3)
190
- activesupport (>= 4.2.0)
191
- nokogiri (>= 1.6)
192
- rails-html-sanitizer (1.3.0)
193
- loofah (~> 2.3)
194
- railties (6.1.3)
195
- actionpack (= 6.1.3)
196
- activesupport (= 6.1.3)
197
- method_source
198
- rake (>= 0.8.7)
199
- thor (~> 1.0)
200
- rainbow (3.0.0)
201
- rake (13.0.3)
202
- rb-fsevent (0.10.4)
203
- rb-inotify (0.10.1)
204
- ffi (~> 1.0)
205
- regexp_parser (2.1.1)
206
- rexml (3.2.5)
207
- rspec (3.10.0)
208
- rspec-core (~> 3.10.0)
209
- rspec-expectations (~> 3.10.0)
210
- rspec-mocks (~> 3.10.0)
211
- rspec-core (3.10.1)
212
- rspec-support (~> 3.10.0)
213
- rspec-expectations (3.10.1)
214
- diff-lcs (>= 1.2.0, < 2.0)
215
- rspec-support (~> 3.10.0)
216
- rspec-mocks (3.10.2)
217
- diff-lcs (>= 1.2.0, < 2.0)
218
- rspec-support (~> 3.10.0)
219
- rspec-rails (4.1.1)
220
- actionpack (>= 4.2)
221
- activesupport (>= 4.2)
222
- railties (>= 4.2)
223
- rspec-core (~> 3.10)
224
- rspec-expectations (~> 3.10)
225
- rspec-mocks (~> 3.10)
226
- rspec-support (~> 3.10)
227
- rspec-support (3.10.2)
228
- rspec_junit_formatter (0.4.1)
229
- rspec-core (>= 2, < 4, != 2.12.0)
230
- rubocop (0.89.0)
231
- parallel (~> 1.10)
232
- parser (>= 2.7.1.1)
233
- rainbow (>= 2.2.2, < 4.0)
234
- regexp_parser (>= 1.7)
235
- rexml
236
- rubocop-ast (>= 0.1.0, < 1.0)
237
- ruby-progressbar (~> 1.7)
238
- unicode-display_width (>= 1.4.0, < 2.0)
239
- rubocop-ast (0.8.0)
240
- parser (>= 2.7.1.5)
241
- rubocop-rspec (1.42.0)
242
- rubocop (>= 0.87.0)
243
- ruby-kafka (1.4.0)
244
- digest-crc
245
- ruby-progressbar (1.11.0)
246
- shellany (0.0.1)
247
- sigurd (0.0.3)
248
- concurrent-ruby (~> 1)
249
- exponential-backoff
250
- sprockets (4.0.2)
251
- concurrent-ruby (~> 1.0)
252
- rack (> 1, < 3)
253
- sprockets-rails (3.2.2)
254
- actionpack (>= 4.0)
255
- activesupport (>= 4.0)
256
- sprockets (>= 3.0.0)
257
- sqlite3 (1.4.2)
258
- thor (1.1.0)
259
- tzinfo (2.0.4)
260
- concurrent-ruby (~> 1.0)
261
- unicode-display_width (1.7.0)
262
- websocket-driver (0.7.3)
263
- websocket-extensions (>= 0.1.0)
264
- websocket-extensions (0.1.5)
265
- zeitwerk (2.4.2)
266
-
267
- PLATFORMS
268
- ruby
269
-
270
- DEPENDENCIES
271
- activerecord-import
272
- avro (~> 1.9)
273
- database_cleaner (~> 1.7)
274
- ddtrace (~> 0.11)
275
- deimos-ruby!
276
- dogstatsd-ruby (~> 4.2)
277
- guard (~> 2)
278
- guard-rspec (~> 4)
279
- guard-rubocop (~> 1)
280
- mysql2 (~> 0.5)
281
- pg (~> 1.1)
282
- rails (~> 6)
283
- rake (~> 13)
284
- rspec (~> 3)
285
- rspec-rails (~> 4)
286
- rspec_junit_formatter (~> 0.3)
287
- rubocop (= 0.89.0)
288
- rubocop-rspec (= 1.42.0)
289
- sqlite3 (~> 1.3)
290
-
291
- BUNDLED WITH
292
- 2.2.17