deimos-ruby 1.3.0.pre.beta5 → 1.4.0.pre.beta1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,229 @@
1
+ # frozen_string_literal: true
2
+
3
+ class MyConfigConsumer < Deimos::Consumer
4
+ end
5
+ describe Deimos, 'configuration' do
6
+ it 'should configure with deprecated fields' do
7
+ logger = Logger.new(nil)
8
+ Deimos.configure do
9
+ kafka_logger logger
10
+ reraise_consumer_errors true
11
+ schema_registry_url 'http://schema.registry'
12
+ seed_broker 'whatever'
13
+ schema_path 'some_path'
14
+ producer_schema_namespace 'namespace'
15
+ producer_topic_prefix 'prefix'
16
+ disable_producers true
17
+ ssl_enabled true
18
+ ssl_ca_cert 'cert'
19
+ ssl_client_cert 'cert'
20
+ ssl_client_cert_key 'key'
21
+ publish_backend 'db'
22
+ report_lag true
23
+ end
24
+
25
+ expect(Deimos.config.kafka.logger).to eq(logger)
26
+ expect(Deimos.config.consumers.reraise_errors).to eq(true)
27
+ expect(Deimos.config.schema.registry_url).to eq('http://schema.registry')
28
+ expect(Deimos.config.kafka.seed_brokers).to eq('whatever')
29
+ expect(Deimos.config.producers.schema_namespace).to eq('namespace')
30
+ expect(Deimos.config.producers.topic_prefix).to eq('prefix')
31
+ expect(Deimos.config.producers.disabled).to eq(true)
32
+ expect(Deimos.config.kafka.ssl.enabled).to eq(true)
33
+ expect(Deimos.config.kafka.ssl.ca_cert).to eq('cert')
34
+ expect(Deimos.config.kafka.ssl.client_cert).to eq('cert')
35
+ expect(Deimos.config.kafka.ssl.client_cert_key).to eq('key')
36
+ expect(Deimos.config.producers.backend).to eq('db')
37
+ expect(Deimos.config.consumers.report_lag).to eq(true)
38
+ end
39
+
40
+ it 'reads existing Phobos config YML files' do
41
+ Deimos.config.reset!
42
+ Deimos.configure { |c| c.phobos_config_file = File.join(File.dirname(__FILE__), '..', 'phobos.yml') }
43
+ expect(Deimos.config.phobos_config).to match(
44
+ logger: an_instance_of(Logger),
45
+ backoff: { min_ms: 1000, max_ms: 60_000 },
46
+ consumer: {
47
+ session_timeout: 300,
48
+ offset_commit_interval: 10,
49
+ offset_commit_threshold: 0,
50
+ heartbeat_interval: 10
51
+ },
52
+ custom_kafka_logger: an_instance_of(Logger),
53
+ custom_logger: an_instance_of(Logger),
54
+ kafka: {
55
+ client_id: 'phobos',
56
+ connect_timeout: 15,
57
+ socket_timeout: 15,
58
+ ssl_verify_hostname: true,
59
+ seed_brokers: ['localhost:9092']
60
+ },
61
+ listeners: [
62
+ {
63
+ topic: 'my_consume_topic',
64
+ group_id: 'my_group_id',
65
+ max_concurrency: nil,
66
+ start_from_beginning: nil,
67
+ max_bytes_per_partition: 524_288,
68
+ min_bytes: nil,
69
+ max_wait_time: nil,
70
+ force_encoding: nil,
71
+ delivery: nil,
72
+ session_timeout: nil,
73
+ offset_commit_interval: nil,
74
+ offset_commit_threshold: nil,
75
+ offset_retention_time: nil,
76
+ heartbeat_interval: nil,
77
+ handler: 'ConsumerTest::MyConsumer'
78
+ }, {
79
+ topic: 'my_batch_consume_topic',
80
+ group_id: 'my_batch_group_id',
81
+ max_concurrency: nil,
82
+ start_from_beginning: nil,
83
+ max_bytes_per_partition: nil,
84
+ min_bytes: nil,
85
+ max_wait_time: nil,
86
+ force_encoding: nil,
87
+ delivery: 'inline_batch',
88
+ session_timeout: nil,
89
+ offset_commit_interval: nil,
90
+ offset_commit_threshold: nil,
91
+ offset_retention_time: nil,
92
+ heartbeat_interval: nil,
93
+ handler: 'ConsumerTest::MyBatchConsumer'
94
+ }
95
+ ],
96
+ producer: {
97
+ ack_timeout: 5,
98
+ required_acks: :all,
99
+ max_retries: 2,
100
+ retry_backoff: 1,
101
+ max_buffer_size: 10_000,
102
+ max_buffer_bytesize: 10_000_000,
103
+ compression_codec: nil,
104
+ compression_threshold: 1,
105
+ max_queue_size: 10_000,
106
+ delivery_threshold: 0,
107
+ delivery_interval: 0
108
+ }
109
+ )
110
+ end
111
+
112
+ specify '#phobos_config' do
113
+ logger1 = Logger.new(nil)
114
+ logger2 = Logger.new(nil)
115
+ Deimos.config.reset!
116
+ Deimos.configure do
117
+ phobos_logger logger1
118
+ kafka do
119
+ logger logger2
120
+ seed_brokers 'my-seed-brokers'
121
+ client_id 'phobos2'
122
+ connect_timeout 30
123
+ socket_timeout 30
124
+ ssl.enabled(true)
125
+ ssl.ca_cert('cert')
126
+ ssl.client_cert('cert')
127
+ ssl.client_cert_key('key')
128
+ ssl.verify_hostname(false)
129
+ end
130
+ consumers do
131
+ session_timeout 30
132
+ offset_commit_interval 5
133
+ offset_commit_threshold 0
134
+ heartbeat_interval 5
135
+ backoff 5..10
136
+ end
137
+ producers do
138
+ ack_timeout 3
139
+ required_acks 1
140
+ max_retries 1
141
+ retry_backoff 2
142
+ max_buffer_size 5
143
+ max_buffer_bytesize 5
144
+ compression_codec :snappy
145
+ compression_threshold 2
146
+ max_queue_size 10
147
+ delivery_threshold 1
148
+ delivery_interval 1
149
+ persistent_connections true
150
+ end
151
+ consumer do
152
+ class_name 'MyConfigConsumer'
153
+ schema 'blah'
154
+ topic 'blah'
155
+ group_id 'myconsumerid'
156
+ max_concurrency 1
157
+ start_from_beginning true
158
+ max_bytes_per_partition 10
159
+ min_bytes 5
160
+ max_wait_time 5
161
+ force_encoding true
162
+ delivery :message
163
+ backoff 100..200
164
+ session_timeout 10
165
+ offset_commit_interval 13
166
+ offset_commit_threshold 13
167
+ offset_retention_time 13
168
+ heartbeat_interval 13
169
+ end
170
+ end
171
+
172
+ expect(Deimos.config.phobos_config).
173
+ to match(
174
+ logger: an_instance_of(Logger),
175
+ backoff: { min_ms: 5, max_ms: 10 },
176
+ consumer: {
177
+ session_timeout: 30,
178
+ offset_commit_interval: 5,
179
+ offset_commit_threshold: 0,
180
+ heartbeat_interval: 5
181
+ },
182
+ custom_kafka_logger: logger2,
183
+ custom_logger: logger1,
184
+ kafka: {
185
+ client_id: 'phobos2',
186
+ connect_timeout: 30,
187
+ socket_timeout: 30,
188
+ ssl_ca_cert: 'cert',
189
+ ssl_client_cert: 'cert',
190
+ ssl_client_cert_key: 'key',
191
+ ssl_verify_hostname: false,
192
+ seed_brokers: ['my-seed-brokers']
193
+ },
194
+ listeners: [
195
+ {
196
+ topic: 'blah',
197
+ group_id: 'myconsumerid',
198
+ max_concurrency: 1,
199
+ start_from_beginning: true,
200
+ max_bytes_per_partition: 10,
201
+ min_bytes: 5,
202
+ max_wait_time: 5,
203
+ force_encoding: true,
204
+ delivery: 'message',
205
+ backoff: { min_ms: 100, max_ms: 200 },
206
+ session_timeout: 10,
207
+ offset_commit_interval: 13,
208
+ offset_commit_threshold: 13,
209
+ offset_retention_time: 13,
210
+ heartbeat_interval: 13,
211
+ handler: 'MyConfigConsumer'
212
+ }
213
+ ],
214
+ producer: {
215
+ ack_timeout: 3,
216
+ required_acks: 1,
217
+ max_retries: 1,
218
+ retry_backoff: 2,
219
+ max_buffer_size: 5,
220
+ max_buffer_bytesize: 5,
221
+ compression_codec: :snappy,
222
+ compression_threshold: 2,
223
+ max_queue_size: 10,
224
+ delivery_threshold: 1,
225
+ delivery_interval: 1
226
+ }
227
+ )
228
+ end
229
+ end
@@ -45,14 +45,14 @@ module ConsumerTest
45
45
  end
46
46
 
47
47
  it 'should fail if reraise is false but fatal_error is true' do
48
- Deimos.configure { |config| config.reraise_consumer_errors = false }
48
+ Deimos.configure { |config| config.consumers.reraise_errors = false }
49
49
  test_consume_invalid_message(MyConsumer, 'fatal')
50
50
  end
51
51
 
52
52
  it 'should fail if fatal_error is true globally' do
53
53
  Deimos.configure do |config|
54
- config.fatal_error { true }
55
- config.reraise_consumer_errors = false
54
+ config.consumers.fatal_error = proc { true }
55
+ config.consumers.reraise_errors = false
56
56
  end
57
57
  test_consume_invalid_message(MyConsumer, 'invalid' => 'key')
58
58
  end
@@ -65,7 +65,7 @@ module ConsumerTest
65
65
  end
66
66
 
67
67
  it 'should not fail when before_consume fails without reraising errors' do
68
- Deimos.configure { |config| config.reraise_consumer_errors = false }
68
+ Deimos.configure { |config| config.consumers.reraise_errors = false }
69
69
  expect {
70
70
  test_consume_message(
71
71
  MyConsumer,
@@ -77,7 +77,7 @@ module ConsumerTest
77
77
  end
78
78
 
79
79
  it 'should not fail when consume fails without reraising errors' do
80
- Deimos.configure { |config| config.reraise_consumer_errors = false }
80
+ Deimos.configure { |config| config.consumers.reraise_errors = false }
81
81
  expect {
82
82
  test_consume_message(
83
83
  MyConsumer,
data/spec/deimos_spec.rb CHANGED
@@ -57,26 +57,13 @@ describe Deimos do
57
57
  expect(Deimos::VERSION).not_to be_nil
58
58
  end
59
59
 
60
- specify 'configure' do
61
- expect(Phobos).to receive(:configure).with(phobos_configuration)
62
- allow(described_class).to receive(:ssl_var_contents) { |key| key }
63
- described_class.configure do |config|
64
- config.phobos_config_file = config_path
65
- config.seed_broker = 'my_seed_broker.com'
66
- config.ssl_enabled = true
67
- config.ssl_ca_cert = 'my_ssl_ca_cert'
68
- config.ssl_client_cert = 'my_ssl_client_cert'
69
- config.ssl_client_cert_key = 'my_ssl_client_cert_key'
70
- end
71
- end
72
-
73
60
  it 'should error if required_acks is not all' do
74
61
  expect {
75
62
  described_class.configure do |config|
76
- config.publish_backend = :db
63
+ config.producers.backend = :db
77
64
  config.phobos_config_file = File.join(File.dirname(__FILE__), 'phobos.bad_db.yml')
78
65
  end
79
- }.to raise_error('Cannot set publish_backend to :db unless required_acks is set to ":all" in phobos.yml!')
66
+ }.to raise_error('Cannot set producers.backend to :db unless producers.required_acks is set to ":all"!')
80
67
  end
81
68
 
82
69
  describe '#start_db_backend!' do
@@ -94,7 +81,7 @@ describe Deimos do
94
81
  signal_handler
95
82
  end
96
83
  described_class.configure do |config|
97
- config.publish_backend = :db
84
+ config.producers.backend = :db
98
85
  end
99
86
  described_class.start_db_backend!(thread_count: 2)
100
87
  end
@@ -102,7 +89,7 @@ describe Deimos do
102
89
  it 'should not start if backend is not db' do
103
90
  expect(Deimos::Utils::SignalHandler).not_to receive(:new)
104
91
  described_class.configure do |config|
105
- config.publish_backend = :kafka
92
+ config.producers.backend = :kafka
106
93
  end
107
94
  expect { described_class.start_db_backend!(thread_count: 2) }.
108
95
  to raise_error('Publish backend is not set to :db, exiting')
@@ -111,7 +98,7 @@ describe Deimos do
111
98
  it 'should not start if thread_count is nil' do
112
99
  expect(Deimos::Utils::SignalHandler).not_to receive(:new)
113
100
  described_class.configure do |config|
114
- config.publish_backend = :db
101
+ config.producers.backend = :db
115
102
  end
116
103
  expect { described_class.start_db_backend!(thread_count: nil) }.
117
104
  to raise_error('Thread count is not given or set to zero, exiting')
@@ -120,7 +107,7 @@ describe Deimos do
120
107
  it 'should not start if thread_count is 0' do
121
108
  expect(Deimos::Utils::SignalHandler).not_to receive(:new)
122
109
  described_class.configure do |config|
123
- config.publish_backend = :db
110
+ config.producers.backend = :db
124
111
  end
125
112
  expect { described_class.start_db_backend!(thread_count: 0) }.
126
113
  to raise_error('Thread count is not given or set to zero, exiting')
@@ -128,11 +115,11 @@ describe Deimos do
128
115
 
129
116
  describe 'delivery configuration' do
130
117
  before(:each) do
131
- described_class.config = nil
132
118
  allow(YAML).to receive(:load).and_return(phobos_configuration)
133
119
  end
134
120
 
135
121
  it 'should not raise an error with properly configured handlers' do
122
+ path = config_path # for scope issues in the block below
136
123
  # Add explicit consumers
137
124
  phobos_configuration['listeners'] << { 'handler' => 'ConsumerTest::MyConsumer',
138
125
  'delivery' => 'message' }
@@ -140,47 +127,39 @@ describe Deimos do
140
127
  'delivery' => 'batch' }
141
128
 
142
129
  expect {
143
- described_class.configure { |c| c.phobos_config_file = config_path }
130
+ described_class.configure { |c| c.phobos_config_file = path }
144
131
  }.not_to raise_error
145
132
  end
146
133
 
147
134
  it 'should raise an error if BatchConsumers do not have inline_batch delivery' do
135
+ path = config_path # for scope issues in the block below
148
136
  phobos_configuration['listeners'] = [{ 'handler' => 'ConsumerTest::MyBatchConsumer',
149
137
  'delivery' => 'message' }]
150
138
 
151
139
  expect {
152
- described_class.configure { |c| c.phobos_config_file = config_path }
140
+ described_class.configure { |c| c.phobos_config_file = path }
153
141
  }.to raise_error('BatchConsumer ConsumerTest::MyBatchConsumer must have delivery set to `inline_batch`')
154
142
  end
155
143
 
156
144
  it 'should raise an error if Consumers do not have message or batch delivery' do
145
+ path = config_path # for scope issues in the block below
157
146
  phobos_configuration['listeners'] = [{ 'handler' => 'ConsumerTest::MyConsumer',
158
147
  'delivery' => 'inline_batch' }]
159
148
 
160
149
  expect {
161
- described_class.configure { |c| c.phobos_config_file = config_path }
150
+ described_class.configure { |c| c.phobos_config_file = path }
162
151
  }.to raise_error('Non-batch Consumer ConsumerTest::MyConsumer must have delivery set to `message` or `batch`')
163
152
  end
164
153
 
165
154
  it 'should treat nil as `batch`' do
155
+ path = config_path # for scope issues in the block below
166
156
  phobos_configuration['listeners'] = [{ 'handler' => 'ConsumerTest::MyConsumer' }]
167
157
 
168
158
  expect {
169
- described_class.configure { |c| c.phobos_config_file = config_path }
159
+ described_class.configure { |c| c.phobos_config_file = path }
170
160
  }.not_to raise_error
171
161
  end
172
162
 
173
- it 'should ignore non-Deimos listeners' do
174
- consumer_class = Class.new { include Phobos::Handler }
175
- stub_const('ConsumerTest::MyOtherConsumer', consumer_class)
176
- phobos_configuration['listeners'] = [{ 'handler' => 'ConsumerTest::MyOtherConsumer',
177
- 'topic' => 'my_consume_topic',
178
- 'group_id' => 'my_group_id' }]
179
-
180
- expect {
181
- described_class.configure { |c| c.phobos_config_file = config_path }
182
- }.not_to raise_error
183
- end
184
163
  end
185
164
  end
186
165
  end
@@ -145,7 +145,7 @@ module KafkaSourceSpec
145
145
  context 'with DB backend' do
146
146
  before(:each) do
147
147
  Deimos.configure do |config|
148
- config.publish_backend = :db
148
+ config.producers.backend = :db
149
149
  end
150
150
  setup_db(DB_OPTIONS.last) # sqlite
151
151
  allow(Deimos::Producer).to receive(:produce_batch).and_call_original
@@ -125,7 +125,7 @@ module ProducerTest
125
125
 
126
126
  it 'should not publish if publish disabled' do
127
127
  expect(described_class).not_to receive(:produce_batch)
128
- Deimos.configure { |c| c.disable_producers = true }
128
+ Deimos.configure { |c| c.producers.disabled = true }
129
129
  MyProducer.publish_list(
130
130
  [{ 'test_id' => 'foo', 'some_int' => 123 },
131
131
  { 'test_id' => 'bar', 'some_int' => 124 }]
@@ -158,7 +158,7 @@ module ProducerTest
158
158
  end
159
159
 
160
160
  it 'should produce to a prefixed topic' do
161
- Deimos.configure { |c| c.producer_topic_prefix = 'prefix.' }
161
+ Deimos.configure { |c| c.producers.topic_prefix = 'prefix.' }
162
162
  payload = { 'test_id' => 'foo', 'some_int' => 123 }
163
163
  expect(described_class).to receive(:produce_batch).once do |_, messages|
164
164
  expect(messages.size).to eq(1)
@@ -176,7 +176,7 @@ module ProducerTest
176
176
  end
177
177
 
178
178
  MyProducer.publish_list([payload])
179
- Deimos.configure { |c| c.producer_topic_prefix = nil }
179
+ Deimos.configure { |c| c.producers.topic_prefix = nil }
180
180
  expect(described_class).to receive(:produce_batch).once do |_, messages|
181
181
  expect(messages.size).to eq(1)
182
182
  expect(messages[0].to_h).
@@ -377,7 +377,7 @@ module ProducerTest
377
377
  end
378
378
 
379
379
  it 'should return db if db is set' do
380
- allow(Deimos.config).to receive(:publish_backend).and_return(:db)
380
+ Deimos.configure { producers.backend = :db }
381
381
  expect(described_class.determine_backend_class(true, false)).
382
382
  to eq(Deimos::Backends::Db)
383
383
  expect(described_class.determine_backend_class(false, false)).
@@ -385,7 +385,7 @@ module ProducerTest
385
385
  end
386
386
 
387
387
  it 'should return kafka if force_send is true' do
388
- allow(Deimos.config).to receive(:publish_backend).and_return(:db)
388
+ Deimos.configure { producers.backend = :db }
389
389
  expect(described_class.determine_backend_class(true, true)).
390
390
  to eq(Deimos::Backends::Kafka)
391
391
  expect(described_class.determine_backend_class(false, true)).
data/spec/spec_helper.rb CHANGED
@@ -144,33 +144,21 @@ RSpec.configure do |config|
144
144
  Time.zone = 'EST'
145
145
  ActiveRecord::Base.logger = Logger.new('/dev/null')
146
146
  setup_db(DbConfigs::DB_OPTIONS.last)
147
+ end
148
+
149
+ config.before(:each) do |ex|
150
+ Deimos.config.reset!
147
151
  Deimos.configure do |deimos_config|
148
152
  deimos_config.phobos_config_file = File.join(File.dirname(__FILE__), 'phobos.yml')
149
- deimos_config.schema_path = File.join(File.expand_path(__dir__), 'schemas')
150
- deimos_config.reraise_consumer_errors = true
151
- deimos_config.schema_registry_url = ENV['SCHEMA_REGISTRY'] || 'http://localhost:8081'
152
- deimos_config.seed_broker = ENV['KAFKA_SEED_BROKER'] || 'localhost:9092'
153
+ deimos_config.schema.path = File.join(File.expand_path(__dir__), 'schemas')
154
+ deimos_config.consumers.reraise_errors = true
155
+ deimos_config.schema.registry_url = ENV['SCHEMA_REGISTRY'] || 'http://localhost:8081'
156
+ deimos_config.kafka.seed_brokers = ENV['KAFKA_SEED_BROKER'] || 'localhost:9092'
153
157
  deimos_config.logger = Logger.new('/dev/null')
154
158
  deimos_config.logger.level = Logger::INFO
155
-
156
- # Use Mock Metrics and Tracing for rspecs
157
- deimos_config.metrics = Deimos::Metrics::Mock.new
158
- deimos_config.tracer = Deimos::Tracing::Mock.new
159
159
  end
160
- end
161
-
162
- config.before(:each) do |ex|
163
160
  stub_producers_and_consumers! unless ex.metadata[:integration]
164
-
165
- @previous_config = Deimos.config.dup
166
- @previous_phobos_config = Phobos.config.dup
167
161
  end
168
-
169
- config.after(:each) do
170
- Deimos.config = @previous_config
171
- Phobos.instance_variable_set(:@config, @previous_phobos_config)
172
- end
173
-
174
162
  end
175
163
 
176
164
  RSpec.shared_context('with DB') do
@@ -3,7 +3,7 @@
3
3
  describe AvroTurf::SchemaStore do
4
4
 
5
5
  it 'should add an in-memory schema' do
6
- schema_store = described_class.new(path: Deimos.config.schema_path)
6
+ schema_store = described_class.new(path: Deimos.config.schema.path)
7
7
  schema_store.load_schemas!
8
8
  found_schema = schema_store.find('MySchema', 'com.my-namespace').as_json
9
9
  expect(found_schema['name']).to eq('MySchema')
@@ -192,11 +192,6 @@ each_db_config(Deimos::Utils::DbProducer) do
192
192
  topic: 'my-topic'
193
193
  }
194
194
  ])
195
- expect(Deimos.config.metrics).to receive(:increment).ordered.with(
196
- 'db_producer.process',
197
- tags: %w(topic:my-topic),
198
- by: 2
199
- )
200
195
  expect(producer).to receive(:retrieve_messages).ordered.
201
196
  and_return(messages[2..3])
202
197
  expect(producer).to receive(:produce_messages).ordered.with([
@@ -213,11 +208,6 @@ each_db_config(Deimos::Utils::DbProducer) do
213
208
  topic: 'my-topic'
214
209
  }
215
210
  ])
216
- expect(Deimos.config.metrics).to receive(:increment).ordered.with(
217
- 'db_producer.process',
218
- tags: %w(topic:my-topic),
219
- by: 2
220
- )
221
211
  expect(producer).to receive(:retrieve_messages).ordered.
222
212
  and_return([])
223
213
  expect(Deimos::KafkaTopicInfo).to receive(:heartbeat).
@@ -6,12 +6,12 @@ describe Deimos::Utils::LagReporter do
6
6
  kafka_client = instance_double(Kafka::Client)
7
7
  allow(kafka_client).to receive(:last_offset_for).and_return(100)
8
8
  allow(Phobos).to receive(:create_kafka_client).and_return(kafka_client)
9
- Deimos.configure { |c| c.report_lag = true }
9
+ Deimos.configure { |c| c.consumers.report_lag = true }
10
10
  end
11
11
 
12
12
  after(:each) do
13
13
  described_class.reset
14
- Deimos.configure { |c| c.report_lag = false }
14
+ Deimos.configure { |c| c.consumers.report_lag = false }
15
15
  end
16
16
 
17
17
  it 'should not report lag before ready' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deimos-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0.pre.beta5
4
+ version: 1.4.0.pre.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Orner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-14 00:00:00.000000000 Z
11
+ date: 2019-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avro-patches
@@ -206,20 +206,6 @@ dependencies:
206
206
  - - "~>"
207
207
  - !ruby/object:Gem::Version
208
208
  version: '1.1'
209
- - !ruby/object:Gem::Dependency
210
- name: rails
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - "~>"
214
- - !ruby/object:Gem::Version
215
- version: '5.2'
216
- type: :development
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - "~>"
221
- - !ruby/object:Gem::Version
222
- version: '5.2'
223
209
  - !ruby/object:Gem::Dependency
224
210
  name: rake
225
211
  requirement: !ruby/object:Gem::Requirement
@@ -331,6 +317,7 @@ files:
331
317
  - bin/deimos
332
318
  - deimos-ruby.gemspec
333
319
  - docker-compose.yml
320
+ - docs/CONFIGURATION.md
334
321
  - docs/DATABASE_BACKEND.md
335
322
  - docs/PULL_REQUEST_TEMPLATE.md
336
323
  - lib/deimos.rb
@@ -344,7 +331,9 @@ files:
344
331
  - lib/deimos/backends/kafka_async.rb
345
332
  - lib/deimos/base_consumer.rb
346
333
  - lib/deimos/batch_consumer.rb
347
- - lib/deimos/configuration.rb
334
+ - lib/deimos/config/configurable.rb
335
+ - lib/deimos/config/configuration.rb
336
+ - lib/deimos/config/phobos_config.rb
348
337
  - lib/deimos/consumer.rb
349
338
  - lib/deimos/instrumentation.rb
350
339
  - lib/deimos/kafka_message.rb
@@ -386,6 +375,8 @@ files:
386
375
  - spec/backends/kafka_async_spec.rb
387
376
  - spec/backends/kafka_spec.rb
388
377
  - spec/batch_consumer_spec.rb
378
+ - spec/config/configurable_spec.rb
379
+ - spec/config/configuration_spec.rb
389
380
  - spec/consumer_spec.rb
390
381
  - spec/deimos_spec.rb
391
382
  - spec/handlers/my_batch_consumer.rb
@@ -396,7 +387,6 @@ files:
396
387
  - spec/phobos.yml
397
388
  - spec/producer_spec.rb
398
389
  - spec/publish_backend_spec.rb
399
- - spec/rake_spec.rb
400
390
  - spec/schemas/com/my-namespace/MySchema-key.avsc
401
391
  - spec/schemas/com/my-namespace/MySchema.avsc
402
392
  - spec/schemas/com/my-namespace/MySchemaWithBooleans.avsc
@@ -448,6 +438,8 @@ test_files:
448
438
  - spec/backends/kafka_async_spec.rb
449
439
  - spec/backends/kafka_spec.rb
450
440
  - spec/batch_consumer_spec.rb
441
+ - spec/config/configurable_spec.rb
442
+ - spec/config/configuration_spec.rb
451
443
  - spec/consumer_spec.rb
452
444
  - spec/deimos_spec.rb
453
445
  - spec/handlers/my_batch_consumer.rb
@@ -458,7 +450,6 @@ test_files:
458
450
  - spec/phobos.yml
459
451
  - spec/producer_spec.rb
460
452
  - spec/publish_backend_spec.rb
461
- - spec/rake_spec.rb
462
453
  - spec/schemas/com/my-namespace/MySchema-key.avsc
463
454
  - spec/schemas/com/my-namespace/MySchema.avsc
464
455
  - spec/schemas/com/my-namespace/MySchemaWithBooleans.avsc