waterdrop 2.3.1 → 2.3.2
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
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile.lock +7 -8
- data/README.md +2 -2
- data/lib/waterdrop/config.rb +3 -1
- data/lib/waterdrop/configurable/leaf.rb +8 -0
- data/lib/waterdrop/configurable/node.rb +100 -0
- data/lib/waterdrop/configurable.rb +71 -0
- data/lib/waterdrop/version.rb +1 -1
- data/lib/waterdrop.rb +0 -1
- data/waterdrop.gemspec +0 -1
- data.tar.gz.sig +0 -0
- metadata +6 -17
- metadata.gz.sig +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 154b5f8a103fcfaa47c5d410583d1aa2c0b689b52cd284614b06e7f7a9460179
|
4
|
+
data.tar.gz: c01ae313dbcf2830267438d3dd19f269a0a7bf29cad824af95f4313f6f04368e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33e5ab153d45e265dd6cdb2b3ab9bb63bda7c8c4399097f1c5c130d4c493de635ee7fad957c83b97d6e5fdd6c4c049a0419ca5e0e063f8163478182cde6b92ed
|
7
|
+
data.tar.gz: 3858e9ac8d2f860f888a5445ec8c59d98d35dce199816058da850bfaaf80308ccd40cff2eb5e872eb3ba111259c4c4d07d0a0219e0a641da0ad0c456d184030a
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
waterdrop (2.3.
|
4
|
+
waterdrop (2.3.2)
|
5
5
|
concurrent-ruby (>= 1.1)
|
6
|
-
dry-configurable (~> 0.13)
|
7
6
|
dry-monitor (~> 0.5)
|
8
7
|
dry-validation (~> 1.7)
|
9
8
|
rdkafka (>= 0.10)
|
@@ -24,24 +23,24 @@ GEM
|
|
24
23
|
dry-configurable (0.15.0)
|
25
24
|
concurrent-ruby (~> 1.0)
|
26
25
|
dry-core (~> 0.6)
|
27
|
-
dry-container (0.
|
26
|
+
dry-container (0.10.0)
|
28
27
|
concurrent-ruby (~> 1.0)
|
29
|
-
|
30
|
-
dry-core (0.7.1)
|
28
|
+
dry-core (0.8.0)
|
31
29
|
concurrent-ruby (~> 1.0)
|
32
30
|
dry-events (0.3.0)
|
33
31
|
concurrent-ruby (~> 1.0)
|
34
32
|
dry-core (~> 0.5, >= 0.5)
|
35
|
-
dry-inflector (0.
|
33
|
+
dry-inflector (0.3.0)
|
36
34
|
dry-initializer (3.1.1)
|
37
35
|
dry-logic (1.2.0)
|
38
36
|
concurrent-ruby (~> 1.0)
|
39
37
|
dry-core (~> 0.5, >= 0.5)
|
40
|
-
dry-monitor (0.
|
38
|
+
dry-monitor (0.6.1)
|
41
39
|
dry-configurable (~> 0.13, >= 0.13.0)
|
42
40
|
dry-core (~> 0.5, >= 0.5)
|
43
41
|
dry-events (~> 0.2)
|
44
|
-
|
42
|
+
zeitwerk (~> 2.5)
|
43
|
+
dry-schema (1.9.3)
|
45
44
|
concurrent-ruby (~> 1.0)
|
46
45
|
dry-configurable (~> 0.13, >= 0.13.0)
|
47
46
|
dry-core (~> 0.5, >= 0.5)
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# WaterDrop
|
2
2
|
|
3
|
-
**Note**: Documentation presented here refers to WaterDrop `2.
|
3
|
+
**Note**: Documentation presented here refers to WaterDrop `2.x`.
|
4
4
|
|
5
|
-
WaterDrop `2.
|
5
|
+
WaterDrop `2.x` does **not** work with Karafka `1.*` and aims to either work as a standalone producer outside of Karafka `1.*` ecosystem or as a part of soon to be released Karafka `2.0.*`.
|
6
6
|
|
7
7
|
Please refer to [this](https://github.com/karafka/waterdrop/tree/1.4) branch and its documentation for details about WaterDrop `1.*` usage.
|
8
8
|
|
data/lib/waterdrop/config.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
module WaterDrop
|
6
6
|
# Configuration object for setting up all options required by WaterDrop
|
7
7
|
class Config
|
8
|
-
include
|
8
|
+
include Configurable
|
9
9
|
|
10
10
|
# Defaults for kafka settings, that will be overwritten only if not present already
|
11
11
|
KAFKA_DEFAULTS = {
|
@@ -68,6 +68,8 @@ module WaterDrop
|
|
68
68
|
|
69
69
|
::Rdkafka::Config.logger = config.logger
|
70
70
|
end
|
71
|
+
|
72
|
+
self
|
71
73
|
end
|
72
74
|
|
73
75
|
private
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WaterDrop
|
4
|
+
module Configurable
|
5
|
+
# Single non-leaf node
|
6
|
+
# This is a core component for the configurable settings
|
7
|
+
#
|
8
|
+
# The idea here is simple: we collect settings (leafs) and children (nodes) information and we
|
9
|
+
# only compile/initialize the values prior to user running the `#configure` API. This API needs
|
10
|
+
# to run prior to using the result stuff even if there is nothing to configure
|
11
|
+
class Node
|
12
|
+
attr_reader :name, :nestings
|
13
|
+
|
14
|
+
# We need to be able to redefine children for deep copy
|
15
|
+
attr_accessor :children
|
16
|
+
|
17
|
+
# @param name [Symbol] node name
|
18
|
+
# @param nestings [Proc] block for nested settings
|
19
|
+
def initialize(name, nestings = ->(_) {})
|
20
|
+
@name = name
|
21
|
+
@children = []
|
22
|
+
@nestings = nestings
|
23
|
+
instance_eval(&nestings)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Allows for a single leaf or nested node definition
|
27
|
+
#
|
28
|
+
# @param name [Symbol] setting or nested node name
|
29
|
+
# @param default [Object] default value
|
30
|
+
# @param constructor [#call, nil] callable or nil
|
31
|
+
# @param block [Proc] block for nested settings
|
32
|
+
def setting(name, default: nil, constructor: nil, &block)
|
33
|
+
@children << if block
|
34
|
+
Node.new(name, block)
|
35
|
+
else
|
36
|
+
Leaf.new(name, default, constructor)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# Allows for the configuration and setup of the settings
|
41
|
+
#
|
42
|
+
# Compile settings, allow for overrides via yielding
|
43
|
+
# @return [Node] returns self after configuration
|
44
|
+
def configure
|
45
|
+
compile
|
46
|
+
yield(self) if block_given?
|
47
|
+
self
|
48
|
+
end
|
49
|
+
|
50
|
+
# @return [Hash] frozen config hash representation
|
51
|
+
def to_h
|
52
|
+
config = {}
|
53
|
+
|
54
|
+
@children.each do |value|
|
55
|
+
config[value.name] = if value.is_a?(Leaf)
|
56
|
+
public_send(value.name)
|
57
|
+
else
|
58
|
+
value.to_h
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
config.freeze
|
63
|
+
end
|
64
|
+
|
65
|
+
# Deep copies all the children nodes to allow us for templates building on a class level and
|
66
|
+
# non-side-effect usage on an instance/inherited.
|
67
|
+
# @return [Node] duplicated node
|
68
|
+
def deep_dup
|
69
|
+
dupped = Node.new(name, nestings)
|
70
|
+
|
71
|
+
dupped.children += children.map do |value|
|
72
|
+
value.is_a?(Leaf) ? value.dup : value.deep_dup
|
73
|
+
end
|
74
|
+
|
75
|
+
dupped
|
76
|
+
end
|
77
|
+
|
78
|
+
# Converts the settings definitions into end children
|
79
|
+
# @note It runs once, after things are compiled, they will not be recompiled again
|
80
|
+
def compile
|
81
|
+
@children.each do |value|
|
82
|
+
# Do not redefine something that was already set during compilation
|
83
|
+
# This will allow us to reconfigure things and skip override with defaults
|
84
|
+
next if respond_to?(value.name)
|
85
|
+
|
86
|
+
singleton_class.attr_accessor value.name
|
87
|
+
|
88
|
+
initialized = if value.is_a?(Leaf)
|
89
|
+
value.constructor ? value.constructor.call(value.default) : value.default
|
90
|
+
else
|
91
|
+
value.compile
|
92
|
+
value
|
93
|
+
end
|
94
|
+
|
95
|
+
public_send("#{value.name}=", initialized)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WaterDrop
|
4
|
+
# A simple dry-configuration API compatible module for defining settings with defaults and a
|
5
|
+
# constructor.
|
6
|
+
module Configurable
|
7
|
+
# A simple settings layer that works similar to dry-configurable
|
8
|
+
# It allows us to define settings on a class and per instance level with templating on a class
|
9
|
+
# level. It handles inheritance and allows for nested settings.
|
10
|
+
#
|
11
|
+
# @note The core settings template needs to be defined on a class level
|
12
|
+
class << self
|
13
|
+
# Sets up all the class methods and inits the core root node.
|
14
|
+
# Useful when only per class settings are needed as does not include instance methods
|
15
|
+
# @param base [Class] class that we extend
|
16
|
+
def extended(base)
|
17
|
+
base.extend ClassMethods
|
18
|
+
end
|
19
|
+
|
20
|
+
# Sets up all the class and instance methods and inits the core root node
|
21
|
+
#
|
22
|
+
# @param base [Class] class to which we want to add configuration
|
23
|
+
#
|
24
|
+
# Needs to be used when per instance configuration is needed
|
25
|
+
def included(base)
|
26
|
+
base.include InstanceMethods
|
27
|
+
base.extend self
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Instance related methods
|
32
|
+
module InstanceMethods
|
33
|
+
# @return [Node] config root node
|
34
|
+
def config
|
35
|
+
@config ||= self.class.config.deep_dup
|
36
|
+
end
|
37
|
+
|
38
|
+
# Allows for a per instance configuration (if needed)
|
39
|
+
# @param block [Proc] block for configuration
|
40
|
+
def configure(&block)
|
41
|
+
config.configure(&block)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Class related methods
|
46
|
+
module ClassMethods
|
47
|
+
# @return [Node] root node for the settings
|
48
|
+
def config
|
49
|
+
return @config if @config
|
50
|
+
|
51
|
+
# This will handle inheritance
|
52
|
+
@config = if superclass.respond_to?(:config)
|
53
|
+
superclass.config.deep_dup
|
54
|
+
else
|
55
|
+
Node.new(:root)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# Allows for a per class configuration (if needed)
|
60
|
+
# @param block [Proc] block for configuration
|
61
|
+
def configure(&block)
|
62
|
+
config.configure(&block)
|
63
|
+
end
|
64
|
+
|
65
|
+
# Pipes the settings setup to the config root node
|
66
|
+
def setting(...)
|
67
|
+
config.setting(...)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/lib/waterdrop/version.rb
CHANGED
data/lib/waterdrop.rb
CHANGED
data/waterdrop.gemspec
CHANGED
@@ -17,7 +17,6 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.license = 'MIT'
|
18
18
|
|
19
19
|
spec.add_dependency 'concurrent-ruby', '>= 1.1'
|
20
|
-
spec.add_dependency 'dry-configurable', '~> 0.13'
|
21
20
|
spec.add_dependency 'dry-monitor', '~> 0.5'
|
22
21
|
spec.add_dependency 'dry-validation', '~> 1.7'
|
23
22
|
spec.add_dependency 'rdkafka', '>= 0.10'
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: waterdrop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maciej Mensfeld
|
@@ -34,7 +34,7 @@ cert_chain:
|
|
34
34
|
R2P11bWoCtr70BsccVrN8jEhzwXngMyI2gVt750Y+dbTu1KgRqZKp/ECe7ZzPzXj
|
35
35
|
pIy9vHxTANKYVyI4qj8OrFdEM5BQNu8oQpL0iQ==
|
36
36
|
-----END CERTIFICATE-----
|
37
|
-
date: 2022-
|
37
|
+
date: 2022-07-17 00:00:00.000000000 Z
|
38
38
|
dependencies:
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: concurrent-ruby
|
@@ -50,20 +50,6 @@ dependencies:
|
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '1.1'
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: dry-configurable
|
55
|
-
requirement: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - "~>"
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: '0.13'
|
60
|
-
type: :runtime
|
61
|
-
prerelease: false
|
62
|
-
version_requirements: !ruby/object:Gem::Requirement
|
63
|
-
requirements:
|
64
|
-
- - "~>"
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '0.13'
|
67
53
|
- !ruby/object:Gem::Dependency
|
68
54
|
name: dry-monitor
|
69
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -144,6 +130,9 @@ files:
|
|
144
130
|
- docker-compose.yml
|
145
131
|
- lib/waterdrop.rb
|
146
132
|
- lib/waterdrop/config.rb
|
133
|
+
- lib/waterdrop/configurable.rb
|
134
|
+
- lib/waterdrop/configurable/leaf.rb
|
135
|
+
- lib/waterdrop/configurable/node.rb
|
147
136
|
- lib/waterdrop/contracts.rb
|
148
137
|
- lib/waterdrop/contracts/base.rb
|
149
138
|
- lib/waterdrop/contracts/config.rb
|
@@ -192,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
192
181
|
- !ruby/object:Gem::Version
|
193
182
|
version: '0'
|
194
183
|
requirements: []
|
195
|
-
rubygems_version: 3.
|
184
|
+
rubygems_version: 3.3.7
|
196
185
|
signing_key:
|
197
186
|
specification_version: 4
|
198
187
|
summary: Kafka messaging made easy!
|
metadata.gz.sig
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
-���m�E�ΕQQiPq�ǶKP k�]�N|�<�b^@�{�@�i�[��B��7މ_˘d�v;G�8%��Htic�D�U+
|