deimos-ruby 2.0.0.pre.alpha7 → 2.0.0.pre.beta2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0940b779309de8eadfc2fe3b5a495690a83f90598045ce790d9bb50d82954909'
4
- data.tar.gz: ae6d40e15e06cb17070ce92421d1546f9d97bd4c4cddb909925d282db49be32c
3
+ metadata.gz: 42ac705b5012248d24a0355f4fbb8ad3e66ed57b3ee08329aea148b57fe65a27
4
+ data.tar.gz: d5e22a7400ed5471815ea8b14a86fe3253ea870c024c4c7ecfcacc5f80042085
5
5
  SHA512:
6
- metadata.gz: 60a19bd65c424f05e8061f8a0fb2e7a1648f6d7f8202cbbd4e40397e5d75cae5d4935d313133ebee6b0641f3505d4161681d7f4534bb0f665e06eca9f28f6d34
7
- data.tar.gz: 13974c3ee935306e72220149a943a5fef0554b332c5c7b81f348df584b7cba0756f9c9d4569856edc72e054981eebdb95789e605fbeddcca72a0b79b207bcae1
6
+ metadata.gz: 0c6f493835cff025892932d7b8d6f0f2ad61f2d26eda7523fe2df217916187512cec3c3e5e21c08eaeaedfc2ede260acee03e0341ee844e13f28974a79de9913
7
+ data.tar.gz: d74bad2d818f09bc81577c06eef13071bbe52d0f3bddec7b8067fa5e360200db96af50d4d1e7f477390d2dca4ba66ae9101ce281f312d6c6acdfedbd5b8efa0d
@@ -66,7 +66,7 @@ module Deimos
66
66
  def record_key(key)
67
67
  if key.nil?
68
68
  {}
69
- elsif key.is_a?(Hash)
69
+ elsif key.is_a?(Hash) || key.is_a?(SchemaClass::Record)
70
70
  self.key_converter.convert(key)
71
71
  elsif self.topic.key_config[:field].nil?
72
72
  { @klass.primary_key => key }
@@ -63,7 +63,7 @@ module Deimos # rubocop:disable Metrics/ModuleLength
63
63
  setting :phobos_logger, removed: 'Separate logger for Phobos is no longer supported'
64
64
 
65
65
  setting :kafka do
66
- setting :logger, removed: "Karafka uses Rails logger by default"
66
+ setting :logger, Logger.new(STDOUT), removed: "Karafka uses Rails logger by default"
67
67
  setting :seed_brokers, ['localhost:9092'], removed: 'Use kafka(bootstrap.servers) in Karafka settings'
68
68
  setting :client_id, 'phobos', removed: 'Use client_id in Karafka setup block.'
69
69
  setting :connect_timeout, 15, removed: 'Use kafka(socket.connection.setup.timeout.ms) in Karafka settings'
@@ -10,7 +10,7 @@ module Deimos
10
10
  message: message
11
11
  ) do
12
12
  config = Deimos.karafka_config_for(topic: message[:topic])
13
- return message if config.nil?
13
+ return message if config.nil? || config.schema.nil?
14
14
  return if message[:payload] && !message[:payload].is_a?(Hash) && !message[:payload].is_a?(SchemaClass::Record)
15
15
 
16
16
  m = Deimos::Message.new(message[:payload].to_h,
@@ -14,7 +14,7 @@ class Matcher
14
14
  def replay_on(topic_node)
15
15
  @applications.each do |method, kwargs|
16
16
  if method == :kafka
17
- topic_node.kafka = kwargs
17
+ topic_node.kafka = kwargs.is_a?(Array) ? kwargs[0] : kwargs
18
18
  next
19
19
  end
20
20
  if kwargs.is_a?(Hash)
@@ -42,7 +42,12 @@ module Deimos
42
42
  case payload_log
43
43
  when :keys
44
44
  keys = messages.map do |m|
45
- m.respond_to?(:payload) ? m.key || m.payload['message_id'] : m[:key] || m[:payload_key] || m[:payload]['message_id']
45
+ if m.respond_to?(:payload)
46
+ m.key || m.payload['message_id']
47
+ elsif m
48
+ payload = m[:payload]&.with_indifferent_access
49
+ m[:key] || m[:payload_key] || payload[:payload_key] || payload[:message_id]
50
+ end
46
51
  end
47
52
  log_message.merge!(
48
53
  payload_keys: keys
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Deimos
4
- VERSION = '2.0.0-alpha7'
4
+ VERSION = '2.0.0-beta2'
5
5
  end
@@ -26,11 +26,11 @@ class KarafkaApp < Karafka::App
26
26
  <%- setup_configs.each do |k, v| -%>
27
27
  config.<%= k %> = <%= v.inspect %>
28
28
  <%- end -%>
29
- config.kafka = {
29
+ config.kafka.merge!({
30
30
  <%- default_kafka_configs.compact.each do |k, v| -%>
31
31
  "<%= k.to_s %>": <%= v.inspect %>,
32
32
  <%- end -%>
33
- }
33
+ })
34
34
  # Recreate consumers with each batch. This will allow Rails code reload to work in the
35
35
  # development mode. Otherwise Karafka process would not be aware of code changes
36
36
  config.consumer_persistence = !Rails.env.development?
@@ -104,6 +104,7 @@ class KarafkaApp < Karafka::App
104
104
  <%- consumer[:kafka].each do |k, v| -%>
105
105
  "<%= k.to_s %>": <%= v.inspect %>,
106
106
  <%- end -%>
107
+ inherit: true
107
108
  )
108
109
  <%- end -%>
109
110
  <%- consumer.except(:topic, :kafka).each do |k, v| -%>
@@ -80,9 +80,9 @@ module Deimos
80
80
  "sasl_plain"
81
81
  end
82
82
  end
83
- configs["ssl.ca.pem"] = deimos_config.kafka.ssl.ca_cert
84
- configs["ssl.certificate.pem"] = deimos_config.kafka.ssl.client_cert
85
- configs["ssl.key.pem"] = deimos_config.kafka.ssl.client_cert_key
83
+ configs["ssl.ca.location"] = deimos_config.kafka.ssl.ca_cert
84
+ configs["ssl.certificate.location"] = deimos_config.kafka.ssl.client_cert
85
+ configs["ssl.key.location"] = deimos_config.kafka.ssl.client_cert_key
86
86
  configs["ssl.endpoint.identification.algorithm"] = "https" if deimos_config.kafka.ssl.verify_hostname
87
87
  configs["sasl.kerberos.principal"] = deimos_config.kafka.sasl.gssapi_principal
88
88
  configs["sasl.kerberos.keytab"] = deimos_config.kafka.sasl.gssapi_keytab
@@ -126,6 +126,7 @@ module Deimos
126
126
  configs[:max_db_batch_size] = consumer.max_db_batch_size unless consumer.default_value?(:max_db_batch_size)
127
127
  configs[:bulk_import_id_column] = consumer.bulk_import_id_column unless consumer.default_value?(:bulk_import_id_column)
128
128
  configs[:replace_associations] = consumer.replace_associations unless consumer.default_value?(:replace_associations)
129
+ configs[:save_associations_first] = consumer.save_associations_first unless consumer.default_value?(:save_associations_first)
129
130
  configs[:active] = false if consumer.disabled
130
131
  configs[:each_message] = true unless consumer.delivery.to_s == 'inline_batch'
131
132
  configs
@@ -172,6 +173,9 @@ module Deimos
172
173
  template('karafka.rb.tt', "karafka.rb", force: true)
173
174
  rename_consumer_methods
174
175
  fix_specs
176
+ insert_into_file("Gemfile", " gem 'karafka-testing'\n", after: "group :test do\n")
177
+ # to avoid inserting multiple times, just in case there isn't a single group :test
178
+ insert_into_file("Gemfile", " gem 'karafka-testing'\n", after: /group .*test.* do\n/)
175
179
  end
176
180
 
177
181
  end
@@ -181,10 +185,18 @@ module Deimos
181
185
  def generate
182
186
  process_all_files
183
187
  say "Generation complete! You are safe to remove the existing initializer that configures Deimos.", :green
188
+ print_warnings
189
+ end
190
+
191
+ def print_warnings
184
192
  say "Note: The following settings cannot be determined by the generator:", :yellow
185
193
  say "* logger / phobos_logger (dynamic object, cannot be printed out)", :yellow
186
194
  say "* kafka.sasl.oauth_token_provider", :yellow
187
195
  say "* producers.max_buffer_size", :yellow
196
+ say "* metrics", :yellow
197
+ say "* tracer", :yellow
198
+ say "* consumers.bulk_import_id_generator", :yellow
199
+ say "* consumer.fatal_error", :yellow
188
200
  say "* consumer.backoff (only handles minimum, not maximum)", :yellow
189
201
  say "For more information, see https://github.com/flipp-oss/deimos/blob/master/docs/UPGRADING.md", :yellow
190
202
  end
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: 2.0.0.pre.alpha7
4
+ version: 2.0.0.pre.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Orner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-11 00:00:00.000000000 Z
11
+ date: 2024-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avro_turf