karafka-core 2.2.3 → 2.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.github/workflows/ci.yml +3 -1
- data/CHANGELOG.md +10 -2
- data/Gemfile.lock +23 -11
- data/karafka-core.gemspec +3 -3
- data/lib/karafka/core/configurable/leaf.rb +6 -1
- data/lib/karafka/core/configurable/node.rb +57 -8
- data/lib/karafka/core/configurable.rb +2 -2
- data/lib/karafka/core/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +8 -8
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36ae7cec0a1a5422a3e9796f1cb6444fb4d6ed612c12c3e946b7799166d59575
|
4
|
+
data.tar.gz: 31c3c120de6dbfa0d17050c2e20b4ec2ff9676bee318c18cea302e4211a2f460
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20eaf33046a91c22b9d76588fa6def39864c794f05c0b5bec1fed690f097a8b7642b9ccc2dd41bfa1c2c5610fba48e1d0848b093728b7e0e1b603377526c03af
|
7
|
+
data.tar.gz: e7433997acbabbedae43826e0d30ce6b1a281cb8bb2c7d137f9beeb8704475a6e4cdb8549c8e01855e676a42b912d7ab21eccba81333920169a72200356a8027
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/.github/workflows/ci.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,17 @@
|
|
1
1
|
# Karafka core changelog
|
2
2
|
|
3
|
-
|
3
|
+
## 2.2.5 (2023-10-31)
|
4
|
+
- [Change] Drop support for Ruby 2.6 due to incompatibilities in usage of `ObjectSpace::WeakMap`
|
5
|
+
- [Change] Set minimum `karafka-rdkafka` on `0.13.8` to support consumer `#position`.
|
6
|
+
|
7
|
+
## 2.2.4 (2023-10-25)
|
8
|
+
- [Enhancement] Allow for `lazy` evaluated constructors.
|
9
|
+
- [Enhancement] Allow no-arg constructors.
|
10
|
+
|
11
|
+
## 2.2.3 (2023-10-17)
|
4
12
|
- [Change] Set minimum `karafka-rdkafka` on `0.13.6`.
|
5
13
|
|
6
|
-
|
14
|
+
## 2.2.2 (2023-09-11)
|
7
15
|
- [Fix] Reuse previous frozen duration as a base for incoming computation.
|
8
16
|
|
9
17
|
## 2.2.1 (2023-09-10)
|
data/Gemfile.lock
CHANGED
@@ -1,34 +1,45 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
karafka-core (2.2.
|
4
|
+
karafka-core (2.2.5)
|
5
5
|
concurrent-ruby (>= 1.1)
|
6
|
-
karafka-rdkafka (>= 0.13.
|
6
|
+
karafka-rdkafka (>= 0.13.8, < 0.15.0)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
activesupport (7.
|
11
|
+
activesupport (7.1.1)
|
12
|
+
base64
|
13
|
+
bigdecimal
|
12
14
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
15
|
+
connection_pool (>= 2.2.5)
|
16
|
+
drb
|
13
17
|
i18n (>= 1.6, < 2)
|
14
18
|
minitest (>= 5.1)
|
19
|
+
mutex_m
|
15
20
|
tzinfo (~> 2.0)
|
21
|
+
base64 (0.1.1)
|
22
|
+
bigdecimal (3.1.4)
|
16
23
|
byebug (11.1.3)
|
17
24
|
concurrent-ruby (1.2.2)
|
25
|
+
connection_pool (2.4.1)
|
18
26
|
diff-lcs (1.5.0)
|
19
27
|
docile (1.4.0)
|
28
|
+
drb (2.1.1)
|
29
|
+
ruby2_keywords
|
20
30
|
factory_bot (6.3.0)
|
21
31
|
activesupport (>= 5.0.0)
|
22
|
-
ffi (1.
|
32
|
+
ffi (1.16.3)
|
23
33
|
i18n (1.14.1)
|
24
34
|
concurrent-ruby (~> 1.0)
|
25
|
-
karafka-rdkafka (0.13.
|
35
|
+
karafka-rdkafka (0.13.8)
|
26
36
|
ffi (~> 1.15)
|
27
37
|
mini_portile2 (~> 2.6)
|
28
38
|
rake (> 12)
|
29
|
-
mini_portile2 (2.8.
|
30
|
-
minitest (5.
|
31
|
-
|
39
|
+
mini_portile2 (2.8.5)
|
40
|
+
minitest (5.20.0)
|
41
|
+
mutex_m (0.1.2)
|
42
|
+
rake (13.1.0)
|
32
43
|
rspec (3.12.0)
|
33
44
|
rspec-core (~> 3.12.0)
|
34
45
|
rspec-expectations (~> 3.12.0)
|
@@ -38,10 +49,11 @@ GEM
|
|
38
49
|
rspec-expectations (3.12.3)
|
39
50
|
diff-lcs (>= 1.2.0, < 2.0)
|
40
51
|
rspec-support (~> 3.12.0)
|
41
|
-
rspec-mocks (3.12.
|
52
|
+
rspec-mocks (3.12.6)
|
42
53
|
diff-lcs (>= 1.2.0, < 2.0)
|
43
54
|
rspec-support (~> 3.12.0)
|
44
|
-
rspec-support (3.12.
|
55
|
+
rspec-support (3.12.1)
|
56
|
+
ruby2_keywords (0.0.5)
|
45
57
|
simplecov (0.22.0)
|
46
58
|
docile (~> 1.1)
|
47
59
|
simplecov-html (~> 0.11)
|
@@ -62,4 +74,4 @@ DEPENDENCIES
|
|
62
74
|
simplecov
|
63
75
|
|
64
76
|
BUNDLED WITH
|
65
|
-
2.4.
|
77
|
+
2.4.19
|
data/karafka-core.gemspec
CHANGED
@@ -17,9 +17,9 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.licenses = %w[MIT]
|
18
18
|
|
19
19
|
spec.add_dependency 'concurrent-ruby', '>= 1.1'
|
20
|
-
spec.add_dependency 'karafka-rdkafka', '>= 0.13.
|
20
|
+
spec.add_dependency 'karafka-rdkafka', '>= 0.13.8', '< 0.15.0'
|
21
21
|
|
22
|
-
spec.required_ruby_version = '>= 2.
|
22
|
+
spec.required_ruby_version = '>= 2.7.0'
|
23
23
|
|
24
24
|
if $PROGRAM_NAME.end_with?('gem')
|
25
25
|
spec.signing_key = File.expand_path('~/.ssh/gem-private_key.pem')
|
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.metadata = {
|
33
33
|
'funding_uri' => 'https://karafka.io/#become-pro',
|
34
34
|
'homepage_uri' => 'https://karafka.io',
|
35
|
-
'changelog_uri' => 'https://
|
35
|
+
'changelog_uri' => 'https://karafka.io/docs/Changelog-Karafka-Core',
|
36
36
|
'bug_tracker_uri' => 'https://github.com/karafka/karafka-core/issues',
|
37
37
|
'source_code_uri' => 'https://github.com/karafka/karafka-core',
|
38
38
|
'documentation_uri' => 'https://karafka.io/docs',
|
@@ -4,11 +4,16 @@ module Karafka
|
|
4
4
|
module Core
|
5
5
|
module Configurable
|
6
6
|
# Single end config value representation
|
7
|
-
Leaf = Struct.new(:name, :default, :constructor, :compiled) do
|
7
|
+
Leaf = Struct.new(:name, :default, :constructor, :compiled, :lazy) do
|
8
8
|
# @return [Boolean] true if already compiled
|
9
9
|
def compiled?
|
10
10
|
compiled
|
11
11
|
end
|
12
|
+
|
13
|
+
# @return [Boolean] is this a lazy evaluated leaf
|
14
|
+
def lazy?
|
15
|
+
lazy == true
|
16
|
+
end
|
12
17
|
end
|
13
18
|
end
|
14
19
|
end
|
@@ -30,12 +30,13 @@ module Karafka
|
|
30
30
|
# @param name [Symbol] setting or nested node name
|
31
31
|
# @param default [Object] default value
|
32
32
|
# @param constructor [#call, nil] callable or nil
|
33
|
+
# @param lazy [Boolean] is this a lazy leaf
|
33
34
|
# @param block [Proc] block for nested settings
|
34
|
-
def setting(name, default: nil, constructor: nil, &block)
|
35
|
+
def setting(name, default: nil, constructor: nil, lazy: false, &block)
|
35
36
|
@children << if block
|
36
37
|
Node.new(name, block)
|
37
38
|
else
|
38
|
-
Leaf.new(name, default, constructor, false)
|
39
|
+
Leaf.new(name, default, constructor, false, lazy)
|
39
40
|
end
|
40
41
|
|
41
42
|
compile
|
@@ -95,27 +96,75 @@ module Karafka
|
|
95
96
|
@children.each do |value|
|
96
97
|
# Do not redefine something that was already set during compilation
|
97
98
|
# This will allow us to reconfigure things and skip override with defaults
|
98
|
-
skippable = respond_to?(value.name)
|
99
|
+
skippable = respond_to?(value.name) || (value.is_a?(Leaf) && value.compiled?)
|
100
|
+
lazy_leaf = value.is_a?(Leaf) && value.lazy?
|
99
101
|
|
100
|
-
|
102
|
+
# Do not create accessor for leafs that are lazy as they will get a custom method
|
103
|
+
# created instead
|
104
|
+
singleton_class.attr_accessor(value.name) unless lazy_leaf
|
101
105
|
|
102
106
|
next if skippable
|
103
107
|
|
104
108
|
initialized = if value.is_a?(Leaf)
|
105
|
-
next if value.compiled?
|
106
|
-
|
107
109
|
value.compiled = true
|
108
|
-
|
110
|
+
|
111
|
+
if value.constructor && value.lazy?
|
112
|
+
false
|
113
|
+
elsif value.constructor
|
114
|
+
call_constructor(value)
|
115
|
+
else
|
116
|
+
value.default
|
117
|
+
end
|
109
118
|
else
|
110
119
|
value.compile
|
111
120
|
value
|
112
121
|
end
|
113
122
|
|
114
|
-
|
123
|
+
if lazy_leaf && !initialized
|
124
|
+
build_dynamic_accessor(value)
|
125
|
+
else
|
126
|
+
public_send("#{value.name}=", initialized)
|
127
|
+
end
|
115
128
|
end
|
116
129
|
|
117
130
|
@compiled = true
|
118
131
|
end
|
132
|
+
|
133
|
+
private
|
134
|
+
|
135
|
+
# Defines a lazy evaluated read and writer that will re-evaluate in case value constructor
|
136
|
+
# evaluates to `nil` or `false`. This allows us to define dynamic constructors that
|
137
|
+
# can react to external conditions to become expected value once this value is
|
138
|
+
# available
|
139
|
+
#
|
140
|
+
# @param value [Leaf]
|
141
|
+
def build_dynamic_accessor(value)
|
142
|
+
singleton_class.attr_writer(value.name)
|
143
|
+
|
144
|
+
define_singleton_method(value.name) do
|
145
|
+
existing = instance_variable_get("@#{value.name}")
|
146
|
+
|
147
|
+
return existing if existing
|
148
|
+
|
149
|
+
built = call_constructor(value)
|
150
|
+
|
151
|
+
instance_variable_set("@#{value.name}", built)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
# Runs the constructor with or without the default depending on its arity and returns the
|
156
|
+
# result
|
157
|
+
#
|
158
|
+
# @param value [Leaf]
|
159
|
+
def call_constructor(value)
|
160
|
+
constructor = value.constructor
|
161
|
+
|
162
|
+
if constructor.arity.zero?
|
163
|
+
constructor.call
|
164
|
+
else
|
165
|
+
constructor.call(value.default)
|
166
|
+
end
|
167
|
+
end
|
119
168
|
end
|
120
169
|
end
|
121
170
|
end
|
@@ -65,14 +65,14 @@ module Karafka
|
|
65
65
|
|
66
66
|
# Two versions are needed to pass arguments in the correct way
|
67
67
|
if RUBY_VERSION >= '2.7'
|
68
|
-
class_eval <<~CODE, __FILE__, __LINE__
|
68
|
+
class_eval <<~CODE, __FILE__, __LINE__ + 1
|
69
69
|
# Pipes the settings setup to the config root node
|
70
70
|
def setting(...)
|
71
71
|
config.setting(...)
|
72
72
|
end
|
73
73
|
CODE
|
74
74
|
else
|
75
|
-
class_eval <<~CODE, __FILE__, __LINE__
|
75
|
+
class_eval <<~CODE, __FILE__, __LINE__ + 1
|
76
76
|
# Pipes the settings setup to the config root node
|
77
77
|
# @param args [Object] anything provided to settings
|
78
78
|
# @param block [Proc] block for settings
|
data/lib/karafka/core/version.rb
CHANGED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: karafka-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maciej Mensfeld
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
AnG1dJU+yL2BK7vaVytLTstJME5mepSZ46qqIJXMuWob/YPDmVaBF39TDSG9e34s
|
36
36
|
msG3BiCqgOgHAnL23+CN3Rt8MsuRfEtoTKpJVcCfoEoNHOkc
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2023-10-
|
38
|
+
date: 2023-10-31 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: concurrent-ruby
|
@@ -57,20 +57,20 @@ dependencies:
|
|
57
57
|
requirements:
|
58
58
|
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: 0.13.
|
60
|
+
version: 0.13.8
|
61
61
|
- - "<"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 0.
|
63
|
+
version: 0.15.0
|
64
64
|
type: :runtime
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - ">="
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: 0.13.
|
70
|
+
version: 0.13.8
|
71
71
|
- - "<"
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
version: 0.
|
73
|
+
version: 0.15.0
|
74
74
|
description: A toolset of small support modules used throughout the Karafka ecosystem
|
75
75
|
email:
|
76
76
|
- contact@karafka.io
|
@@ -128,7 +128,7 @@ licenses:
|
|
128
128
|
metadata:
|
129
129
|
funding_uri: https://karafka.io/#become-pro
|
130
130
|
homepage_uri: https://karafka.io
|
131
|
-
changelog_uri: https://
|
131
|
+
changelog_uri: https://karafka.io/docs/Changelog-Karafka-Core
|
132
132
|
bug_tracker_uri: https://github.com/karafka/karafka-core/issues
|
133
133
|
source_code_uri: https://github.com/karafka/karafka-core
|
134
134
|
documentation_uri: https://karafka.io/docs
|
@@ -141,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
141
141
|
requirements:
|
142
142
|
- - ">="
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version: 2.
|
144
|
+
version: 2.7.0
|
145
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
146
|
requirements:
|
147
147
|
- - ">="
|
metadata.gz.sig
CHANGED
Binary file
|