getaround_utils 0.1.8 → 0.1.9
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/Gemfile.lock +11 -1
- data/README.md +13 -0
- data/getaround_utils.gemspec +1 -0
- data/lib/getaround_utils/log_formatters/deep_key_value.rb +17 -27
- data/lib/getaround_utils/patches.rb +1 -0
- data/lib/getaround_utils/patches/key_value_log_tags.rb +0 -1
- data/lib/getaround_utils/patches/key_value_sidekiq_exceptions.rb +26 -0
- data/lib/getaround_utils/utils/deep_key_value_serializer.rb +16 -2
- data/lib/getaround_utils/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6caee3209d10665822566c7ccc2d6b336c8132b72106aacda7db87a317a0f9f7
|
4
|
+
data.tar.gz: 241deaa2c3b3d37bb21bade62b517b54bee6fc62910113f2f40209862230d80c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c19cb3921b428f3cd7f5d885edb7eb2214fae0c07449f8a25e0a2225c6961408960d641f7a702b686cbf453476e4eea90e558f18ce0310af19ff49874f57ea17
|
7
|
+
data.tar.gz: 25230181f5c735e08c60384e5fd734969b4a703df25a2cf995f7582131a0e6b182e5d091e1bd5ab6d741f3b4008df09cb9d2c220e3ecaf5ab308ee913ca56eb0
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
getaround_utils (0.1.
|
4
|
+
getaround_utils (0.1.9)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -65,6 +65,7 @@ GEM
|
|
65
65
|
builder (3.2.3)
|
66
66
|
coderay (1.1.2)
|
67
67
|
concurrent-ruby (1.1.5)
|
68
|
+
connection_pool (2.2.2)
|
68
69
|
crass (1.0.5)
|
69
70
|
diff-lcs (1.3)
|
70
71
|
erubi (1.9.0)
|
@@ -103,6 +104,8 @@ GEM
|
|
103
104
|
coderay (~> 1.1.0)
|
104
105
|
method_source (~> 0.9.0)
|
105
106
|
rack (2.0.7)
|
107
|
+
rack-protection (2.0.7)
|
108
|
+
rack
|
106
109
|
rack-test (1.1.0)
|
107
110
|
rack (>= 1.0, < 3)
|
108
111
|
rails (6.0.0)
|
@@ -133,6 +136,7 @@ GEM
|
|
133
136
|
thor (>= 0.20.3, < 2.0)
|
134
137
|
rainbow (3.0.0)
|
135
138
|
rake (10.5.0)
|
139
|
+
redis (4.1.3)
|
136
140
|
relaxed-rubocop (2.4)
|
137
141
|
request_store (1.4.1)
|
138
142
|
rack (>= 1.4)
|
@@ -167,6 +171,11 @@ GEM
|
|
167
171
|
rubocop-rspec (1.36.0)
|
168
172
|
rubocop (>= 0.68.1)
|
169
173
|
ruby-progressbar (1.10.1)
|
174
|
+
sidekiq (6.0.3)
|
175
|
+
connection_pool (>= 2.2.2)
|
176
|
+
rack (>= 2.0.0)
|
177
|
+
rack-protection (>= 2.0.0)
|
178
|
+
redis (>= 4.1.0)
|
170
179
|
sprockets (4.0.0)
|
171
180
|
concurrent-ruby (~> 1.0)
|
172
181
|
rack (> 1, < 3)
|
@@ -199,6 +208,7 @@ DEPENDENCIES
|
|
199
208
|
rspec-rails (~> 3.9)
|
200
209
|
rubocop (~> 0.75, >= 0.75.0)
|
201
210
|
rubocop-rspec (~> 1.36, >= 0.36.0)
|
211
|
+
sidekiq (~> 6.0)
|
202
212
|
|
203
213
|
BUNDLED WITH
|
204
214
|
2.0.2
|
data/README.md
CHANGED
@@ -52,6 +52,19 @@ GetaroundUtils::Patches::KeyValueLogTags.enable
|
|
52
52
|
|
53
53
|
For more details, [read the spec](spec/getaround_utils/patches/key_value_log_tags_spec.rb)
|
54
54
|
|
55
|
+
|
56
|
+
### GetaroundUtils::Patches::KeyValueSidekiqExceptions
|
57
|
+
|
58
|
+
Enables parse-able exception logging from Sidekiq
|
59
|
+
```
|
60
|
+
# config/application.rb
|
61
|
+
require 'getaround_utils/patches/key_value_sidekiq_exceptions'
|
62
|
+
GetaroundUtils::Patches::KeyValueSidekiqExceptions.enable
|
63
|
+
```
|
64
|
+
|
65
|
+
For more details, [read the spec](spec/getaround_utils/patches/key_value_sidekiq_exceptions_spec.rb)
|
66
|
+
|
67
|
+
|
55
68
|
## Misc
|
56
69
|
|
57
70
|
### GetaroundUtils::LogFormatters::DeepKeyValue
|
data/getaround_utils.gemspec
CHANGED
@@ -24,4 +24,5 @@ Gem::Specification.new do |gem|
|
|
24
24
|
gem.add_development_dependency 'rspec-rails', '~> 3.9'
|
25
25
|
gem.add_development_dependency 'rubocop', '~> 0.75', '>= 0.75.0'
|
26
26
|
gem.add_development_dependency 'rubocop-rspec', '~> 1.36', '>= 0.36.0'
|
27
|
+
gem.add_development_dependency 'sidekiq', '~> 6.0'
|
27
28
|
end
|
@@ -10,51 +10,41 @@ require 'getaround_utils/utils/deep_key_value_serializer'
|
|
10
10
|
# It will attempt to serialize message it is a string otherwise adding it as message=value
|
11
11
|
|
12
12
|
class GetaroundUtils::LogFormatters::DeepKeyValue < GetaroundUtils::Utils::DeepKeyValueSerializer
|
13
|
-
def
|
14
|
-
payload = { severity: severity, appname: appname }
|
13
|
+
def normalize(message)
|
15
14
|
if message.is_a?(Hash)
|
16
|
-
|
15
|
+
serialize(message.compact)
|
16
|
+
elsif message.is_a?(String) && message.match(/^[^ =]+=/)
|
17
|
+
message
|
17
18
|
else
|
18
|
-
|
19
|
+
serialize(message: message.to_s)
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
23
|
+
def call(severity, _datetime, appname, message)
|
24
|
+
payload = { severity: severity, appname: appname }
|
25
|
+
"#{normalize(payload)} #{normalize(message)}\n"
|
26
|
+
end
|
27
|
+
|
22
28
|
module Lograge
|
23
|
-
def call(
|
24
|
-
|
25
|
-
serialize(
|
29
|
+
def call(message)
|
30
|
+
message = message.compact if message.is_a?(Hash)
|
31
|
+
serialize(message)
|
26
32
|
end
|
27
33
|
end
|
28
34
|
|
29
|
-
##
|
30
|
-
# Return a lograge-style LogFormatter
|
31
|
-
#
|
32
|
-
# This formatter will only take one argument and serialize it
|
33
|
-
|
34
35
|
def self.for_lograge
|
35
36
|
new.extend(Lograge)
|
36
37
|
end
|
37
38
|
|
38
39
|
module Sidekiq
|
39
40
|
def call(severity, _datetime, appname, message)
|
40
|
-
payload = {}
|
41
|
-
|
42
|
-
|
43
|
-
message
|
44
|
-
message.merge(payload.compact)
|
45
|
-
else
|
46
|
-
"#{serialize(payload.compact)} #{message}"
|
47
|
-
end
|
48
|
-
super
|
41
|
+
payload = { severity: severity, appname: appname }
|
42
|
+
sidekiq = { sidekiq: Thread.current[:sidekiq_context] || {} }
|
43
|
+
sidekiq[:sidekiq][:tid] = Thread.current['sidekiq_tid']
|
44
|
+
"#{normalize(payload)} #{normalize(message)} #{normalize(sidekiq)}\n"
|
49
45
|
end
|
50
46
|
end
|
51
47
|
|
52
|
-
##
|
53
|
-
# Return a sidekiq-style LogFormatter
|
54
|
-
#
|
55
|
-
# This formatter replicates the default Sidekiq LogFormatter behavior of merging context
|
56
|
-
# values from the current Thread's store
|
57
|
-
|
58
48
|
def self.for_sidekiq
|
59
49
|
new.extend(Sidekiq)
|
60
50
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'sidekiq/exception_handler'
|
2
|
+
require 'getaround_utils/utils/deep_key_value_serializer'
|
3
|
+
|
4
|
+
module GetaroundUtils; end
|
5
|
+
module GetaroundUtils::Patches; end
|
6
|
+
|
7
|
+
class GetaroundUtils::Patches::KeyValueSidekiqExceptions
|
8
|
+
module ExceptionHandlerLogger
|
9
|
+
def kv_formatter
|
10
|
+
@kv_formatter ||= GetaroundUtils::Utils::DeepKeyValueSerializer.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def call(exception, ctx)
|
14
|
+
payload = {}
|
15
|
+
payload[:exception] = exception&.class&.name
|
16
|
+
payload[:sidekiq] = ctx
|
17
|
+
payload[:message] = exception&.message
|
18
|
+
payload[:backtrace] = exception&.backtrace&.join("\n")
|
19
|
+
Sidekiq.logger.warn(kv_formatter.serialize(payload.compact))
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.enable
|
24
|
+
Sidekiq::ExceptionHandler::Logger.prepend ExceptionHandlerLogger
|
25
|
+
end
|
26
|
+
end
|
@@ -2,6 +2,11 @@ module GetaroundUtils; end
|
|
2
2
|
module GetaroundUtils::Utils; end
|
3
3
|
|
4
4
|
class GetaroundUtils::Utils::DeepKeyValueSerializer
|
5
|
+
def initialize(max_depth: 5, max_length: 512)
|
6
|
+
@max_depth = max_depth
|
7
|
+
@max_length = max_length
|
8
|
+
end
|
9
|
+
|
5
10
|
def serialize(data)
|
6
11
|
case data
|
7
12
|
when Array
|
@@ -19,6 +24,10 @@ class GetaroundUtils::Utils::DeepKeyValueSerializer
|
|
19
24
|
|
20
25
|
# https://stackoverflow.com/questions/48836464/how-to-flatten-a-hash-making-each-key-a-unique-value
|
21
26
|
def flattify(value, result = {}, path = [])
|
27
|
+
if path.length > @max_depth
|
28
|
+
result[path.join(".")] = '"..."'
|
29
|
+
return result
|
30
|
+
end
|
22
31
|
case value
|
23
32
|
when Array
|
24
33
|
value.each.with_index(0) do |v, i|
|
@@ -31,9 +40,14 @@ class GetaroundUtils::Utils::DeepKeyValueSerializer
|
|
31
40
|
when Numeric
|
32
41
|
result[path.join(".")] = value.to_s
|
33
42
|
when String
|
34
|
-
|
43
|
+
value = if value =~ /^".*"$/
|
44
|
+
value.length >= @max_length ? %{#{value[0...@max_length]} ..."} : value
|
45
|
+
else
|
46
|
+
value.length >= @max_length ? %{#{value[0...@max_length]} ...}.inspect : value.inspect
|
47
|
+
end
|
48
|
+
result[path.join(".")] = value
|
35
49
|
else
|
36
|
-
|
50
|
+
flattify(value.to_s, result, path)
|
37
51
|
end
|
38
52
|
result
|
39
53
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: getaround_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Drivy
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-11-
|
12
|
+
date: 2019-11-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -175,6 +175,20 @@ dependencies:
|
|
175
175
|
- - "~>"
|
176
176
|
- !ruby/object:Gem::Version
|
177
177
|
version: '1.36'
|
178
|
+
- !ruby/object:Gem::Dependency
|
179
|
+
name: sidekiq
|
180
|
+
requirement: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - "~>"
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '6.0'
|
185
|
+
type: :development
|
186
|
+
prerelease: false
|
187
|
+
version_requirements: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - "~>"
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '6.0'
|
178
192
|
description: Shared base utility classes for Getaround Backend Applications.
|
179
193
|
email:
|
180
194
|
- oss@drivy.com
|
@@ -194,6 +208,7 @@ files:
|
|
194
208
|
- lib/getaround_utils/mixins/loggable.rb
|
195
209
|
- lib/getaround_utils/patches.rb
|
196
210
|
- lib/getaround_utils/patches/key_value_log_tags.rb
|
211
|
+
- lib/getaround_utils/patches/key_value_sidekiq_exceptions.rb
|
197
212
|
- lib/getaround_utils/railties/lograge.rb
|
198
213
|
- lib/getaround_utils/utils.rb
|
199
214
|
- lib/getaround_utils/utils/deep_key_value_serializer.rb
|