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 +4 -4
- data/CHANGELOG.md +4 -0
- data/docs/CONFIGURATION.md +7 -6
- data/lib/deimos/backends/base.rb +32 -10
- data/lib/deimos/config/configuration.rb +3 -0
- data/lib/deimos/test_helpers.rb +1 -1
- data/lib/deimos/version.rb +1 -1
- data/spec/backends/base_spec.rb +24 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6be8380428e48dd415fd6ec606832fab6204a280effc65e65e967ef72dca1c32
|
4
|
+
data.tar.gz: 1096e0da58a961c3875b5d8545a6c226ba60ebacd5c60639f09acce4dcb73374
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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`
|
data/docs/CONFIGURATION.md
CHANGED
@@ -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
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
|
data/lib/deimos/backends/base.rb
CHANGED
@@ -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
|
data/lib/deimos/test_helpers.rb
CHANGED
@@ -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) &&
|
data/lib/deimos/version.rb
CHANGED
data/spec/backends/base_spec.rb
CHANGED
@@ -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
|
+
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-
|
11
|
+
date: 2023-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: avro_turf
|