tobox 0.1.0 → 0.1.1
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 +10 -0
- data/lib/tobox/cli.rb +2 -2
- data/lib/tobox/configuration.rb +9 -1
- data/lib/tobox/fetcher.rb +24 -9
- data/lib/tobox/plugins/datadog/configuration.rb +3 -3
- data/lib/tobox/pool.rb +3 -1
- data/lib/tobox/version.rb +1 -1
- data/lib/tobox/worker.rb +2 -2
- 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: 13c585e5f8cec257d1f8de481a90620f7e71ce6cd4cac6b4b769cb04ab62c485
|
4
|
+
data.tar.gz: fddcccd9b518c8303131693ed66c178ae6ea833cd7941dab4c588a284e715967
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1dda1246e5e0651a5f31c4b9ee1a3aae333e0a7098a26e72e839681ccec1466936199abe840d9153d56b5e8fa1532594f7e915ffa5953f0382e5d22b3b07e35d
|
7
|
+
data.tar.gz: 7958822a76f442696c6323af42031cd28091fdfb764eb8b1a39737ab214048d3c664275c4c91abc47c84c070f9940b325a297547ffce8815203bb97711f2280e
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [0.1.1] - 2002-09-14
|
4
|
+
|
5
|
+
### Chore
|
6
|
+
|
7
|
+
Improved default logger, by logging the thread name, as well as providing the worker id in the lifecycle event logs.
|
8
|
+
|
9
|
+
### Bugfixes
|
10
|
+
|
11
|
+
Do not try to json parse already parsed json columns (this happens if the DB object already has `:pg_json` extension loaded).
|
12
|
+
|
3
13
|
## [0.1.0] - 2022-09-05
|
4
14
|
|
5
15
|
- Initial release.
|
data/lib/tobox/cli.rb
CHANGED
@@ -17,13 +17,13 @@ module Tobox
|
|
17
17
|
|
18
18
|
def run
|
19
19
|
options = @options
|
20
|
-
logger = Logger.new($stderr)
|
21
20
|
|
22
21
|
config = Configuration.new do |c|
|
23
|
-
c.logger(logger)
|
24
22
|
c.instance_eval(File.read(options.fetch(:config_file)), options.fetch(:config_file), 1)
|
25
23
|
end
|
26
24
|
|
25
|
+
logger = config.default_logger
|
26
|
+
|
27
27
|
# boot
|
28
28
|
options.fetch(:require).each(&method(:require))
|
29
29
|
|
data/lib/tobox/configuration.rb
CHANGED
@@ -25,6 +25,14 @@ module Tobox
|
|
25
25
|
worker: :thread
|
26
26
|
}.freeze
|
27
27
|
|
28
|
+
LOG_FORMAT_PATTERN = "%s, [%s #%d (th: %s)] %5s -- %s: %s\n"
|
29
|
+
DEFAULT_LOG_FORMATTER = Class.new(Logger::Formatter) do
|
30
|
+
def call(severity, time, progname, msg)
|
31
|
+
format(LOG_FORMAT_PATTERN, severity[0, 1], format_datetime(time), Process.pid,
|
32
|
+
Thread.current.name || Thread.current.object_id, severity, progname, msg2str(msg))
|
33
|
+
end
|
34
|
+
end.new
|
35
|
+
|
28
36
|
def initialize(name = nil, &block)
|
29
37
|
@name = name
|
30
38
|
@config = DEFAULT_CONFIGURATION.dup
|
@@ -46,7 +54,7 @@ module Tobox
|
|
46
54
|
end
|
47
55
|
|
48
56
|
env = @config[:environment]
|
49
|
-
@default_logger = @config[:logger] || Logger.new(STDERR) # rubocop:disable Style/GlobalStdStream
|
57
|
+
@default_logger = @config[:logger] || Logger.new(STDERR, formatter: DEFAULT_LOG_FORMATTER) # rubocop:disable Style/GlobalStdStream
|
50
58
|
@default_logger.level = @config[:log_level] || (env == "production" ? Logger::INFO : Logger::DEBUG)
|
51
59
|
|
52
60
|
freeze
|
data/lib/tobox/fetcher.rb
CHANGED
@@ -4,7 +4,8 @@ require "json"
|
|
4
4
|
|
5
5
|
module Tobox
|
6
6
|
class Fetcher
|
7
|
-
def initialize(configuration)
|
7
|
+
def initialize(label, configuration)
|
8
|
+
@label = label
|
8
9
|
@configuration = configuration
|
9
10
|
|
10
11
|
@logger = @configuration.default_logger
|
@@ -56,7 +57,7 @@ module Tobox
|
|
56
57
|
num_events = events.size
|
57
58
|
|
58
59
|
events.each do |ev|
|
59
|
-
ev[:metadata] =
|
60
|
+
ev[:metadata] = try_json_parse(ev[:metadata])
|
60
61
|
handle_before_event(ev)
|
61
62
|
yield(to_message(ev))
|
62
63
|
rescue StandardError => e
|
@@ -90,6 +91,10 @@ module Tobox
|
|
90
91
|
|
91
92
|
private
|
92
93
|
|
94
|
+
def log_message(msg)
|
95
|
+
"(worker: #{@label}) -> #{msg}"
|
96
|
+
end
|
97
|
+
|
93
98
|
def mark_as_error(event, error)
|
94
99
|
@ds.where(id: event[:id]).returning.update(
|
95
100
|
attempts: Sequel[@table][:attempts] + 1,
|
@@ -105,21 +110,31 @@ module Tobox
|
|
105
110
|
{
|
106
111
|
id: event[:id],
|
107
112
|
type: event[:type],
|
108
|
-
before: (
|
109
|
-
after: (
|
113
|
+
before: try_json_parse(event[:data_before]),
|
114
|
+
after: try_json_parse(event[:data_after]),
|
110
115
|
at: event[:created_at]
|
111
116
|
}
|
112
117
|
end
|
113
118
|
|
119
|
+
def try_json_parse(data)
|
120
|
+
return unless data
|
121
|
+
|
122
|
+
data = JSON.parse(data.to_s) unless data.is_a?(Hash)
|
123
|
+
|
124
|
+
data
|
125
|
+
end
|
126
|
+
|
114
127
|
def handle_before_event(event)
|
115
|
-
@logger.debug
|
128
|
+
@logger.debug do
|
129
|
+
log_message("outbox event (type: \"#{event[:type]}\", attempts: #{event[:attempts]}) starting...")
|
130
|
+
end
|
116
131
|
@before_event_handlers.each do |hd|
|
117
132
|
hd.call(event)
|
118
133
|
end
|
119
134
|
end
|
120
135
|
|
121
136
|
def handle_after_event(event)
|
122
|
-
@logger.debug { "outbox event (type: \"#{event[:type]}\", attempts: #{event[:attempts]}) completed" }
|
137
|
+
@logger.debug { log_message("outbox event (type: \"#{event[:type]}\", attempts: #{event[:attempts]}) completed") }
|
123
138
|
@after_event_handlers.each do |hd|
|
124
139
|
hd.call(event)
|
125
140
|
end
|
@@ -127,9 +142,9 @@ module Tobox
|
|
127
142
|
|
128
143
|
def handle_error_event(event, error)
|
129
144
|
@logger.error do
|
130
|
-
"outbox event (type: \"#{event[:type]}\", attempts: #{event[:attempts]}) failed with error\n" \
|
131
|
-
|
132
|
-
|
145
|
+
log_message("outbox event (type: \"#{event[:type]}\", attempts: #{event[:attempts]}) failed with error\n" \
|
146
|
+
"#{error.class}: #{error.message}\n" \
|
147
|
+
"#{error.backtrace.join("\n")}")
|
133
148
|
end
|
134
149
|
@error_event_handlers.each do |hd|
|
135
150
|
hd.call(event, error)
|
@@ -9,17 +9,17 @@ module Datadog
|
|
9
9
|
module Configuration
|
10
10
|
class Settings < Contrib::Configuration::Settings
|
11
11
|
option :enabled do |o|
|
12
|
-
o.default { env_to_bool("
|
12
|
+
o.default { env_to_bool("DD_TOBOX_SIDEKIQ_ENABLED", true) }
|
13
13
|
o.lazy
|
14
14
|
end
|
15
15
|
|
16
16
|
option :analytics_enabled do |o|
|
17
|
-
o.default { env_to_bool("
|
17
|
+
o.default { env_to_bool("DD_TOBOX_SIDEKIQ_ANALYTICS_ENABLED", false) }
|
18
18
|
o.lazy
|
19
19
|
end
|
20
20
|
|
21
21
|
option :analytics_sample_rate do |o|
|
22
|
-
o.default { env_to_float("
|
22
|
+
o.default { env_to_float("DD_TRACE_TOBOX_ANALYTICS_SAMPLE_RATE", 1.0) }
|
23
23
|
o.lazy
|
24
24
|
end
|
25
25
|
|
data/lib/tobox/pool.rb
CHANGED
@@ -5,7 +5,9 @@ module Tobox
|
|
5
5
|
def initialize(configuration)
|
6
6
|
@configuration = configuration
|
7
7
|
@num_workers = configuration[:concurrency]
|
8
|
-
@workers = Array.new(@num_workers)
|
8
|
+
@workers = Array.new(@num_workers) do |idx|
|
9
|
+
Worker.new("tobox-worker-#{idx}", configuration)
|
10
|
+
end
|
9
11
|
start
|
10
12
|
end
|
11
13
|
|
data/lib/tobox/version.rb
CHANGED
data/lib/tobox/worker.rb
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
|
3
3
|
module Tobox
|
4
4
|
class Worker
|
5
|
-
def initialize(configuration)
|
5
|
+
def initialize(label, configuration)
|
6
6
|
@wait_for_events_delay = configuration[:wait_for_events_delay]
|
7
7
|
@handlers = configuration.handlers || {}
|
8
|
-
@fetcher = Fetcher.new(configuration)
|
8
|
+
@fetcher = Fetcher.new(label, configuration)
|
9
9
|
@finished = false
|
10
10
|
|
11
11
|
return unless (message_to_arguments = configuration.arguments_handler)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tobox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- HoneyryderChuck
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-09-
|
11
|
+
date: 2022-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sequel
|