delivery_boy 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +10 -0
- data/README.md +28 -5
- data/delivery_boy.gemspec +1 -1
- data/lib/delivery_boy.rb +6 -0
- data/lib/delivery_boy/config.rb +4 -0
- data/lib/delivery_boy/fake.rb +12 -0
- data/lib/delivery_boy/instance.rb +7 -1
- data/lib/delivery_boy/version.rb +1 -1
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a12782da215edcc91544e184fd5804b2c21fb4a4be180f69addd0e2f7787884e
|
4
|
+
data.tar.gz: 6de9279ba3441524aceef6091a4feaf57d67a8623499779877b39ed9a11edad9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6787bea888f6a2db4bb0d66eaad3c2234c9b6e4482c81ec69e43c27960b4c4a191ec553c0a24c87a46c5067811e2b9eb85265b34fc9457692465dfa8d902c5af
|
7
|
+
data.tar.gz: e10d3020dbaedfe5608fab51e6e1d343341919aab23b905766cdc386e2b844d5177d464fba93d69b79cc6d3704a5ad703ca97464f5754a363a9d362fecec2559
|
data/CHANGELOG
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## Unreleased
|
4
|
+
|
5
|
+
## v1.1.0
|
6
|
+
|
7
|
+
* Support for `ssl_client_cert_key_password` in the configuration (#52)
|
8
|
+
* Add `DeliveryBoy.buffer_size` to return the number of messages in the buffer
|
9
|
+
* Add `DeliveryBoy::Fake#clear_buffer` and `DeliveryBoy::Fake#buffer_size` to
|
10
|
+
support the public API when using the test helper.
|
11
|
+
* Support for `sasl_oauth_token_provider` in the configuration. (#55)
|
12
|
+
|
3
13
|
## v1.0.1
|
4
14
|
|
5
15
|
* Require ruby-kafka v1.0 or higher.
|
data/README.md
CHANGED
@@ -66,7 +66,7 @@ A third method is to produce messages first (without delivering the messages to
|
|
66
66
|
class CommentsController < ApplicationController
|
67
67
|
def create
|
68
68
|
@comment = Comment.create!(params)
|
69
|
-
|
69
|
+
|
70
70
|
event = {
|
71
71
|
name: "comment_created",
|
72
72
|
data: {
|
@@ -74,13 +74,13 @@ A third method is to produce messages first (without delivering the messages to
|
|
74
74
|
user_id: current_user.id
|
75
75
|
}
|
76
76
|
}
|
77
|
-
|
77
|
+
|
78
78
|
# This will queue the two messages in the internal buffer.
|
79
79
|
DeliveryBoy.produce(comment.to_json, topic: "comments")
|
80
80
|
DeliveryBoy.produce(event.to_json, topic: "activity")
|
81
|
-
|
81
|
+
|
82
82
|
# This will deliver all messages in the buffer to Kafka.
|
83
|
-
# This call is blocking.
|
83
|
+
# This call is blocking.
|
84
84
|
DeliveryBoy.deliver_messages
|
85
85
|
end
|
86
86
|
end
|
@@ -220,11 +220,15 @@ A PEM encoded client cert to use with an SSL connection. Must be used in combina
|
|
220
220
|
|
221
221
|
A PEM encoded client cert key to use with an SSL connection. Must be used in combination with `ssl_client_cert`.
|
222
222
|
|
223
|
+
##### `ssl_client_cert_key_password`
|
224
|
+
|
225
|
+
The password required to read the ssl_client_cert_key. Must be used in combination with ssl_client_cert_key.
|
226
|
+
|
223
227
|
#### SASL Authentication and authorization
|
224
228
|
|
225
229
|
See [ruby-kafka](https://github.com/zendesk/ruby-kafka#authentication-using-sasl) for more information.
|
226
230
|
|
227
|
-
Use
|
231
|
+
Use it through `GSSAPI`, `PLAIN` _or_ `OAUTHBEARER`.
|
228
232
|
|
229
233
|
##### `sasl_gssapi_principal`
|
230
234
|
|
@@ -246,6 +250,25 @@ The username used to authenticate.
|
|
246
250
|
|
247
251
|
The password used to authenticate.
|
248
252
|
|
253
|
+
##### `sasl_oauth_token_provider`
|
254
|
+
|
255
|
+
A instance of a class which implements the `token` method.
|
256
|
+
As described in [ruby-kafka](https://github.com/zendesk/ruby-kafka/tree/c3e90bc355fad1e27b9af1048966ff08d3d5735b#oauthbearer)
|
257
|
+
|
258
|
+
```ruby
|
259
|
+
class TokenProvider
|
260
|
+
def token
|
261
|
+
"oauth-token"
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
DeliveryBoy.configure do |config|
|
266
|
+
config.sasl_oauth_token_provider = TokenProvider.new
|
267
|
+
config.ssl_ca_certs_from_system = true
|
268
|
+
end
|
269
|
+
```
|
270
|
+
|
271
|
+
|
249
272
|
### Testing
|
250
273
|
|
251
274
|
DeliveryBoy provides a test mode out of the box. When this mode is enabled, messages will be stored in memory rather than being sent to Kafka. If you use RSpec, enabling test mode is as easy as adding this to your spec helper:
|
data/delivery_boy.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
|
23
23
|
spec.add_runtime_dependency "ruby-kafka", "~> 1.0"
|
24
|
-
spec.add_runtime_dependency "king_konf", "~> 0
|
24
|
+
spec.add_runtime_dependency "king_konf", "~> 1.0"
|
25
25
|
|
26
26
|
spec.add_development_dependency "bundler", "~> 1.15"
|
27
27
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/lib/delivery_boy.rb
CHANGED
@@ -4,6 +4,7 @@ require "delivery_boy/version"
|
|
4
4
|
require "delivery_boy/instance"
|
5
5
|
require "delivery_boy/fake"
|
6
6
|
require "delivery_boy/config"
|
7
|
+
require "delivery_boy/config_error"
|
7
8
|
require "delivery_boy/railtie" if defined?(Rails::Railtie)
|
8
9
|
|
9
10
|
module DeliveryBoy
|
@@ -85,6 +86,11 @@ module DeliveryBoy
|
|
85
86
|
instance.clear_buffer
|
86
87
|
end
|
87
88
|
|
89
|
+
# Return the number of messages in the buffer
|
90
|
+
def buffer_size
|
91
|
+
instance.buffer_size
|
92
|
+
end
|
93
|
+
|
88
94
|
# Shut down DeliveryBoy.
|
89
95
|
#
|
90
96
|
# Automatically called when the process exits.
|
data/lib/delivery_boy/config.rb
CHANGED
@@ -38,6 +38,7 @@ module DeliveryBoy
|
|
38
38
|
string :ssl_ca_cert_file_path
|
39
39
|
string :ssl_client_cert, default: nil
|
40
40
|
string :ssl_client_cert_key, default: nil
|
41
|
+
string :ssl_client_cert_key_password, default: nil
|
41
42
|
boolean :ssl_ca_certs_from_system, default: false
|
42
43
|
boolean :ssl_verify_hostname, default: true
|
43
44
|
|
@@ -52,6 +53,9 @@ module DeliveryBoy
|
|
52
53
|
string :sasl_scram_mechanism
|
53
54
|
boolean :sasl_over_ssl, default: true
|
54
55
|
|
56
|
+
# SASL OAUTHBEARER
|
57
|
+
attr_accessor :sasl_oauth_token_provider
|
58
|
+
|
55
59
|
# Datadog monitoring
|
56
60
|
boolean :datadog_enabled
|
57
61
|
string :datadog_host
|
data/lib/delivery_boy/fake.rb
CHANGED
@@ -51,6 +51,18 @@ module DeliveryBoy
|
|
51
51
|
clear
|
52
52
|
end
|
53
53
|
|
54
|
+
def clear_buffer
|
55
|
+
@delivery_lock.synchronize do
|
56
|
+
@buffer.clear
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def buffer_size
|
61
|
+
@delivery_lock.synchronize do
|
62
|
+
@buffer.values.flatten.size
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
54
66
|
# Clear all messages stored in memory.
|
55
67
|
def clear
|
56
68
|
@delivery_lock.synchronize do
|
@@ -40,6 +40,10 @@ module DeliveryBoy
|
|
40
40
|
sync_producer.clear_buffer
|
41
41
|
end
|
42
42
|
|
43
|
+
def buffer_size
|
44
|
+
sync_producer.buffer_size
|
45
|
+
end
|
46
|
+
|
43
47
|
private
|
44
48
|
|
45
49
|
attr_reader :config, :logger
|
@@ -80,6 +84,7 @@ module DeliveryBoy
|
|
80
84
|
ssl_ca_cert_file_path: config.ssl_ca_cert_file_path,
|
81
85
|
ssl_client_cert: config.ssl_client_cert,
|
82
86
|
ssl_client_cert_key: config.ssl_client_cert_key,
|
87
|
+
ssl_client_cert_key_password: config.ssl_client_cert_key_password,
|
83
88
|
ssl_ca_certs_from_system: config.ssl_ca_certs_from_system,
|
84
89
|
ssl_verify_hostname: config.ssl_verify_hostname,
|
85
90
|
sasl_gssapi_principal: config.sasl_gssapi_principal,
|
@@ -90,7 +95,8 @@ module DeliveryBoy
|
|
90
95
|
sasl_scram_username: config.sasl_scram_username,
|
91
96
|
sasl_scram_password: config.sasl_scram_password,
|
92
97
|
sasl_scram_mechanism: config.sasl_scram_mechanism,
|
93
|
-
sasl_over_ssl: config.sasl_over_ssl
|
98
|
+
sasl_over_ssl: config.sasl_over_ssl,
|
99
|
+
sasl_oauth_token_provider: config.sasl_oauth_token_provider
|
94
100
|
)
|
95
101
|
end
|
96
102
|
|
data/lib/delivery_boy/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delivery_boy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Schierbeck
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby-kafka
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0
|
33
|
+
version: '1.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0
|
40
|
+
version: '1.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,8 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
132
|
requirements: []
|
133
|
-
|
134
|
-
rubygems_version: 2.7.6
|
133
|
+
rubygems_version: 3.1.2
|
135
134
|
signing_key:
|
136
135
|
specification_version: 4
|
137
136
|
summary: A simple way to produce messages to Kafka from Ruby applications
|