deimos-ruby 1.19.4 → 1.19.5

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: ebc86e599570ecca44db7513b6867291ab15dc40e1d0449874bace006560905c
4
- data.tar.gz: 3d840e13761a83f44ea03babbe55956367e490efdb22c15e4fa969f2621e715e
3
+ metadata.gz: 6be8380428e48dd415fd6ec606832fab6204a280effc65e65e967ef72dca1c32
4
+ data.tar.gz: 1096e0da58a961c3875b5d8545a6c226ba60ebacd5c60639f09acce4dcb73374
5
5
  SHA512:
6
- metadata.gz: ef1ad52fedf17ebc3310ea4921072a2480c1c651168ab4f78c4522332e28580a82d17e63129b4fc1fb03c46df64433f9c8e2fb96bf79d7148c9852ef58a0a1ae
7
- data.tar.gz: bfa9b9ca8d2685ff98e715d98f60e845c8d360799e996b578fb47f8e86027c7c2d8ee4f79c29c479b37390bf20abe6089598887ed8d73216cbd716b123dcf170
6
+ metadata.gz: 7770d8bf7eb8c9b1db538891a025586411c24c076cfe49474e312ca859386366d24cf57007c0e1230fa98dd2aa17ca3b0fc1c0f9324003918a7df00e0738944f
7
+ data.tar.gz: '02019bdab7dd827f9373de64250c10119ab56dcf441369f3bec7c023e3c524f403fcdb35202c4e92cdfa0b66175ca17905c86ab407cc8f45fea49bad1d33c6b5'
data/CHANGELOG.md CHANGED
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## UNRELEASED
9
9
 
10
+ # 1.19.5 - 2023-03-29
11
+
12
+ - Feature: add additional setting to Deimos.config - payload_log
13
+
10
14
  # 1.19.4 - 2023-03-23
11
15
 
12
16
  - Feature: Limit amount of transactions in a single database call with `max_db_batch_size`
@@ -10,12 +10,13 @@ Nested configuration is denoted in simple dot notation:
10
10
  configurations.
11
11
 
12
12
  ## Base Configuration
13
- Config name|Default|Description
14
- -----------|-------|-----------
15
- logger|`Logger.new(STDOUT)`|The logger that Deimos will use.
16
- phobos_logger|`Deimos.config.logger`|The logger passed to Phobos.
17
- metrics|`Deimos::Metrics::Mock.new`|The metrics backend use for reporting.
18
- tracer|`Deimos::Tracing::Mock.new`|The tracer backend used for debugging.
13
+ Config name| Default |Description
14
+ -----------|-----------------------------|-----------
15
+ logger| `Logger.new(STDOUT)` |The logger that Deimos will use.
16
+ payload_log| `:full` |Determines how much data is logged per payload.</br>`:full` - all keys and payloads are logged.</br>`:keys` - only keys are logged.</br>`:count` - only the total count of messages are logged.
17
+ phobos_logger| `Deimos.config.logger` |The logger passed to Phobos.
18
+ metrics| `Deimos::Metrics::Mock.new` |The metrics backend use for reporting.
19
+ tracer| `Deimos::Tracing::Mock.new` |The tracer backend used for debugging.
19
20
 
20
21
  ## Defining Producers
21
22
 
@@ -9,16 +9,7 @@ module Deimos
9
9
  # @param messages [Array<Deimos::Message>]
10
10
  # @return [void]
11
11
  def publish(producer_class:, messages:)
12
- Deimos.config.logger.info(
13
- message: 'Publishing messages',
14
- topic: messages.first&.topic,
15
- payloads: messages.map do |message|
16
- {
17
- payload: message.payload,
18
- key: message.key
19
- }
20
- end
21
- )
12
+ Deimos.config.logger.info(log_message(messages))
22
13
  execute(producer_class: producer_class, messages: messages)
23
14
  end
24
15
 
@@ -28,6 +19,37 @@ module Deimos
28
19
  def execute(producer_class:, messages:)
29
20
  raise NotImplementedError
30
21
  end
22
+
23
+ private
24
+
25
+ def log_message(messages)
26
+ log_message = {
27
+ message: 'Publishing messages',
28
+ topic: messages.first&.topic
29
+ }
30
+
31
+ case Deimos.config.payload_log
32
+ when :keys
33
+ log_message.merge!(
34
+ payload_keys: messages.map(&:key)
35
+ )
36
+ when :count
37
+ log_message.merge!(
38
+ payloads_count: messages.count
39
+ )
40
+ else
41
+ log_message.merge!(
42
+ payloads: messages.map do |message|
43
+ {
44
+ payload: message.payload,
45
+ key: message.key
46
+ }
47
+ end
48
+ )
49
+ end
50
+
51
+ log_message
52
+ end
31
53
  end
32
54
  end
33
55
  end
@@ -95,6 +95,9 @@ module Deimos
95
95
  # @return [Logger]
96
96
  setting :logger, Logger.new(STDOUT)
97
97
 
98
+ # @return [Symbol]
99
+ setting :payload_log, :full
100
+
98
101
  # @return [Logger]
99
102
  setting :phobos_logger, default_proc: proc { Deimos.config.logger.clone }
100
103
 
@@ -143,7 +143,7 @@ module Deimos
143
143
  Deimos::Backends::Test.sent_messages.any? do |m|
144
144
  hash_matcher = RSpec::Matchers::BuiltIn::Match.new(message)
145
145
  hash_matcher.send(:match,
146
- message.to_h,
146
+ message&.respond_to?(:to_h) ? message.to_h : message,
147
147
  m[:payload]&.with_indifferent_access) &&
148
148
  topic == m[:topic] &&
149
149
  (key.present? ? key == m[:key] : true) &&
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Deimos
4
- VERSION = '1.19.4'
4
+ VERSION = '1.19.5'
5
5
  end
@@ -7,4 +7,28 @@ RSpec.describe Deimos::Backends::Base do
7
7
  with(messages: messages, producer_class: MyProducer)
8
8
  described_class.publish(producer_class: MyProducer, messages: messages)
9
9
  end
10
+
11
+ describe 'payload_log method' do
12
+ it 'should return whole payload (default behavior)' do
13
+ log_message = described_class.send(:log_message, messages)
14
+ expect(log_message[:payloads].count).to eq(3)
15
+ expect(log_message[:payloads].first[:payload]).to eq({ 'foo' => 1 })
16
+ expect(log_message[:payloads].first[:key]).to eq('foo1')
17
+ end
18
+
19
+ it 'should return only keys of messages' do
20
+ Deimos.config.payload_log = :keys
21
+ log_message = described_class.send(:log_message, messages)
22
+ expect(log_message[:payload_keys].count).to eq(3)
23
+ expect(log_message[:payload_keys]).to be_a(Array)
24
+ expect(log_message[:payload_keys].first).to eq('foo1')
25
+ end
26
+
27
+ it 'should return only messages count' do
28
+ Deimos.config.payload_log = :count
29
+ log_message = described_class.send(:log_message, messages)
30
+ expect(log_message[:payloads_count]).to be_a(Integer)
31
+ expect(log_message[:payloads_count]).to eq(3)
32
+ end
33
+ end
10
34
  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: 1.19.4
4
+ version: 1.19.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Orner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-23 00:00:00.000000000 Z
11
+ date: 2023-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avro_turf