getaround_utils 0.2.22 → 0.2.23

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 58b10898f00f8c2e46207ee4048602603d2765560da5e82f78d506c1595a4b2c
4
- data.tar.gz: 41aebe4bc7ffb3f9ed1995c4231479149d6f3c7765934f69d9b48b6098d90301
3
+ metadata.gz: d0f45f64d93dc7e5b83b2ee8612dff306880d7953c3e9026edcafe40925e7127
4
+ data.tar.gz: 5bcd057a886ff3a7423841f5bc29fb491501fa3c9226658a4b17801ae6eee189
5
5
  SHA512:
6
- metadata.gz: dd59793351753bb94b39eebf2fb0bdda889e5e985ec832fbd6ba28b9f8bca5e7e879e66daa9bebb77e014e7d00967c211727ea633a8dbd1a8ceb2a3b147571e9
7
- data.tar.gz: 98457dc6584d8c60b973618cb356e1c393f3f4673d3555b062d8342ae65800f3b33e06a161534efe66b08c9a845196fd5893a82bc8970621b3918376600c6d5a
6
+ metadata.gz: 98f5f63856cc9319be1d3f04e69bcf8aa5a165c48ad982ebf058a9e0faf92e31bf6dbeb1b5311f8ea89512156e508a7d3e070fbf0cfc22897958bc7279d58c06
7
+ data.tar.gz: ae985999bf28745645966d3108fd0dce14fba751f4a2e53aace72f5089515ddd94d6765ae3ae3349972b69cbcd72ac73b9f5083a4ec8acbf1a3c0d532938e8f7
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.6.7
1
+ ruby-2.7.4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- getaround_utils (0.2.21)
4
+ getaround_utils (0.2.23)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -70,28 +70,28 @@ GEM
70
70
  ast (2.4.2)
71
71
  builder (3.2.4)
72
72
  coderay (1.1.3)
73
- concurrent-ruby (1.1.9)
73
+ concurrent-ruby (1.1.10)
74
74
  connection_pool (2.2.5)
75
75
  crack (0.4.5)
76
76
  rexml
77
77
  crass (1.0.6)
78
78
  diff-lcs (1.5.0)
79
79
  erubi (1.10.0)
80
- getaround-rubocop (0.2.6)
80
+ getaround-rubocop (0.2.7)
81
81
  relaxed-rubocop (= 2.5)
82
- rubocop (= 1.18.3)
82
+ rubocop (= 1.25.1)
83
83
  rubocop-rspec (= 2.4.0)
84
84
  globalid (1.0.0)
85
85
  activesupport (>= 5.0)
86
86
  hashdiff (1.0.1)
87
87
  i18n (1.10.0)
88
88
  concurrent-ruby (~> 1.0)
89
- lograge (0.11.2)
89
+ lograge (0.12.0)
90
90
  actionpack (>= 4)
91
91
  activesupport (>= 4)
92
92
  railties (>= 4)
93
93
  request_store (~> 1.0)
94
- loofah (2.14.0)
94
+ loofah (2.18.0)
95
95
  crass (~> 1.0.2)
96
96
  nokogiri (>= 1.5.9)
97
97
  mail (2.7.1)
@@ -102,21 +102,21 @@ GEM
102
102
  mini_portile2 (2.8.0)
103
103
  minitest (5.15.0)
104
104
  nio4r (2.5.8)
105
- nokogiri (1.13.3)
105
+ nokogiri (1.13.6)
106
106
  mini_portile2 (~> 2.8.0)
107
107
  racc (~> 1.4)
108
108
  oj (3.11.3)
109
109
  ougai (2.0.0)
110
110
  oj (~> 3.10)
111
- parallel (1.20.1)
112
- parser (3.0.2.0)
111
+ parallel (1.21.0)
112
+ parser (3.1.1.0)
113
113
  ast (~> 2.4.1)
114
114
  pry (0.14.1)
115
115
  coderay (~> 1.1)
116
116
  method_source (~> 1.0)
117
117
  public_suffix (4.0.6)
118
118
  racc (1.6.0)
119
- rack (2.2.3)
119
+ rack (2.2.3.1)
120
120
  rack-test (1.1.0)
121
121
  rack (>= 1.0, < 3)
122
122
  rails (6.1.4.6)
@@ -137,7 +137,7 @@ GEM
137
137
  rails-dom-testing (2.0.3)
138
138
  activesupport (>= 4.2.0)
139
139
  nokogiri (>= 1.6)
140
- rails-html-sanitizer (1.4.2)
140
+ rails-html-sanitizer (1.4.3)
141
141
  loofah (~> 2.3)
142
142
  railties (6.1.4.6)
143
143
  actionpack (= 6.1.4.6)
@@ -145,12 +145,12 @@ GEM
145
145
  method_source
146
146
  rake (>= 0.13)
147
147
  thor (~> 1.0)
148
- rainbow (3.0.0)
148
+ rainbow (3.1.1)
149
149
  rake (13.0.6)
150
150
  redis (4.6.0)
151
- regexp_parser (2.1.1)
151
+ regexp_parser (2.2.1)
152
152
  relaxed-rubocop (2.5)
153
- request_store (1.5.0)
153
+ request_store (1.5.1)
154
154
  rack (>= 1.4)
155
155
  request_store_rails (2.0.0)
156
156
  concurrent-ruby (~> 1.0)
@@ -164,10 +164,10 @@ GEM
164
164
  rspec-expectations (3.11.0)
165
165
  diff-lcs (>= 1.2.0, < 2.0)
166
166
  rspec-support (~> 3.11.0)
167
- rspec-mocks (3.11.0)
167
+ rspec-mocks (3.11.1)
168
168
  diff-lcs (>= 1.2.0, < 2.0)
169
169
  rspec-support (~> 3.11.0)
170
- rspec-rails (5.1.0)
170
+ rspec-rails (5.1.2)
171
171
  actionpack (>= 5.2)
172
172
  activesupport (>= 5.2)
173
173
  railties (>= 5.2)
@@ -176,22 +176,22 @@ GEM
176
176
  rspec-mocks (~> 3.10)
177
177
  rspec-support (~> 3.10)
178
178
  rspec-support (3.11.0)
179
- rubocop (1.18.3)
179
+ rubocop (1.25.1)
180
180
  parallel (~> 1.10)
181
- parser (>= 3.0.0.0)
181
+ parser (>= 3.1.0.0)
182
182
  rainbow (>= 2.2.2, < 4.0)
183
183
  regexp_parser (>= 1.8, < 3.0)
184
184
  rexml
185
- rubocop-ast (>= 1.7.0, < 2.0)
185
+ rubocop-ast (>= 1.15.1, < 2.0)
186
186
  ruby-progressbar (~> 1.7)
187
187
  unicode-display_width (>= 1.4.0, < 3.0)
188
- rubocop-ast (1.8.0)
189
- parser (>= 3.0.1.1)
188
+ rubocop-ast (1.16.0)
189
+ parser (>= 3.1.1.0)
190
190
  rubocop-rspec (2.4.0)
191
191
  rubocop (~> 1.0)
192
192
  rubocop-ast (>= 1.1.0)
193
193
  ruby-progressbar (1.11.0)
194
- sidekiq (6.4.1)
194
+ sidekiq (6.5.0)
195
195
  connection_pool (>= 2.2.2)
196
196
  rack (~> 2.0)
197
197
  redis (>= 4.2.0)
@@ -205,7 +205,7 @@ GEM
205
205
  thor (1.2.1)
206
206
  tzinfo (2.0.4)
207
207
  concurrent-ruby (~> 1.0)
208
- unicode-display_width (2.0.0)
208
+ unicode-display_width (2.1.0)
209
209
  webmock (3.14.0)
210
210
  addressable (>= 2.8.0)
211
211
  crack (>= 0.3.2)
@@ -220,9 +220,9 @@ PLATFORMS
220
220
 
221
221
  DEPENDENCIES
222
222
  bundler (~> 2.0)
223
- getaround-rubocop (= 0.2.6)
223
+ getaround-rubocop (= 0.2.7)
224
224
  getaround_utils!
225
- lograge (~> 0.11.2)
225
+ lograge (~> 0.12.0)
226
226
  ougai (~> 2.0)
227
227
  pry (~> 0.14.0)
228
228
  rails (~> 6.0)
@@ -230,9 +230,9 @@ DEPENDENCIES
230
230
  request_store_rails (~> 2.0)
231
231
  rspec (~> 3.9, >= 3.9.0)
232
232
  rspec-rails (~> 5.0)
233
- rubocop (= 1.18.3)
233
+ rubocop (= 1.25.1)
234
234
  sidekiq (~> 6.0)
235
235
  webmock (~> 3.7)
236
236
 
237
237
  BUNDLED WITH
238
- 2.2.21
238
+ 2.3.4
data/README.md CHANGED
@@ -28,8 +28,8 @@ For more details, [read the spec](spec/getaround_utils/railties/ougai_spec.rb)
28
28
 
29
29
  ### GetaroundUtils::Mixins::Loggable
30
30
 
31
- Enables lograge (http logs) with favored default.
32
- ```
31
+ - Enables lograge (http logs) with favored default.
32
+ ```ruby
33
33
  class MyClass
34
34
  include GetaroundUtils::Mixins::Loggable
35
35
 
@@ -48,6 +48,31 @@ MyClass.new.action # :info message="hello" origin="MyClass" static="value" dynam
48
48
 
49
49
  For more details, [read the spec](spec/getaround_utils/mixins/loggable_spec.rb)
50
50
 
51
+ - Offers an abstraction to log messages with a configurable `alert_threshold` attribute
52
+
53
+ ```ruby
54
+ class MyClass
55
+ include GetaroundUtils::Mixins::Loggable
56
+
57
+ def action
58
+ monitorable_log(:my_event_to_be_monitored, dynamic: 'value')
59
+ end
60
+ end
61
+
62
+ MyClass.new.action # :info message="monitorable_log__my_event_to_be_monitored" origin="MyClass" dynamic="value", threshold=10
63
+ ```
64
+ The threshold is configured in the relevant Rails configuration (eg `config/environments/production.rb`)
65
+ ```ruby
66
+ # ...
67
+ config.monitorable_log_thresholds = {
68
+ my_event_to_be_monitored: 10
69
+ }
70
+ # ...
71
+ ```
72
+ You may set / override the configured thresholds with an environment variable of the event name prefixed with `MONITORABLE_LOG__`, for instance `MONITORABLE_LOG__MY_EVENT_TO_BE_MONITORED`.
73
+
74
+ For more details, [read the spec](spec/getaround_utils/mixins/loggable_spec.rb#L171)
75
+
51
76
  ## Misc
52
77
 
53
78
  ### GetaroundUtils::LogFormatters::DeepKeyValue
@@ -11,7 +11,7 @@ Gem::Specification.new do |gem|
11
11
  gem.email = ['oss@drivy.com']
12
12
  gem.homepage = 'https://github.com/drivy'
13
13
  gem.license = 'MIT'
14
- gem.required_ruby_version = '>= 2.6'
14
+ gem.required_ruby_version = '>= 2.7'
15
15
 
16
16
  gem.files = Dir.chdir(File.expand_path(__dir__)) do
17
17
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(spec)/}) }
@@ -19,16 +19,16 @@ Gem::Specification.new do |gem|
19
19
 
20
20
  # Development dependencies
21
21
  gem.add_development_dependency 'bundler', '~> 2.0'
22
- gem.add_development_dependency 'getaround-rubocop', '= 0.2.6'
22
+ gem.add_development_dependency 'getaround-rubocop', '= 0.2.7'
23
23
  gem.add_development_dependency 'pry', '~> 0.14.0'
24
24
  gem.add_development_dependency 'rake', '~> 13.0'
25
25
  gem.add_development_dependency 'rspec', '~> 3.9', '>= 3.9.0'
26
26
  gem.add_development_dependency 'rspec-rails', '~> 5.0'
27
- gem.add_development_dependency 'rubocop', '= 1.18.3'
27
+ gem.add_development_dependency 'rubocop', '= 1.25.1'
28
28
  gem.add_development_dependency 'webmock', '~> 3.7'
29
29
 
30
30
  # Functional (optional) dependencies
31
- gem.add_development_dependency 'lograge', '~> 0.11.2'
31
+ gem.add_development_dependency 'lograge', '~> 0.12.0'
32
32
  gem.add_development_dependency 'ougai', '~> 2.0'
33
33
  gem.add_development_dependency 'rails', '~> 6.0'
34
34
  gem.add_development_dependency 'request_store_rails', '~> 2.0'
@@ -29,4 +29,38 @@ module GetaroundUtils::Mixins::Loggable
29
29
  base_append_infos_to_loggable(payload)
30
30
  loggable_logger.send(severity.to_sym, msg: message, **payload)
31
31
  end
32
+
33
+ MONITORABLE_LOG_PREFIX = "monitorable_log__"
34
+
35
+ def monitorable_log(event_name, **options)
36
+ monitorable_threshold = monitorable_threshold(event_name)
37
+ return if monitorable_threshold.blank?
38
+
39
+ loggable_log(
40
+ :info,
41
+ log_message(event_name),
42
+ alert_threshold: monitorable_threshold,
43
+ **options
44
+ )
45
+ end
46
+
47
+ def monitorable_threshold(event_name)
48
+ monitorable_threshold = ENV["#{log_message(event_name)}_threshold".upcase]&.to_i
49
+ if monitorable_threshold.nil? && rails_config_defined?
50
+ monitorable_threshold = Rails.application.config.monitorable_log_thresholds&.dig(event_name.to_sym)
51
+ end
52
+ monitorable_threshold
53
+ end
54
+
55
+ def log_message(event_name)
56
+ MONITORABLE_LOG_PREFIX + event_name
57
+ end
58
+
59
+ private
60
+
61
+ def rails_config_defined?
62
+ defined?(Rails) &&
63
+ Rails.application.config.respond_to?(:monitorable_log_thresholds) &&
64
+ Rails.application.config.monitorable_log_thresholds.respond_to?(:dig)
65
+ end
32
66
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GetaroundUtils
4
- VERSION = '0.2.22'
4
+ VERSION = '0.2.23'
5
5
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: getaround_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.22
4
+ version: 0.2.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Drivy
8
8
  - Laurent Humez
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-02-28 00:00:00.000000000 Z
12
+ date: 2022-06-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - '='
33
33
  - !ruby/object:Gem::Version
34
- version: 0.2.6
34
+ version: 0.2.7
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - '='
40
40
  - !ruby/object:Gem::Version
41
- version: 0.2.6
41
+ version: 0.2.7
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: pry
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -71,22 +71,22 @@ dependencies:
71
71
  name: rspec
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: 3.9.0
77
74
  - - "~>"
78
75
  - !ruby/object:Gem::Version
79
76
  version: '3.9'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 3.9.0
80
80
  type: :development
81
81
  prerelease: false
82
82
  version_requirements: !ruby/object:Gem::Requirement
83
83
  requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- version: 3.9.0
87
84
  - - "~>"
88
85
  - !ruby/object:Gem::Version
89
86
  version: '3.9'
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 3.9.0
90
90
  - !ruby/object:Gem::Dependency
91
91
  name: rspec-rails
92
92
  requirement: !ruby/object:Gem::Requirement
@@ -107,14 +107,14 @@ dependencies:
107
107
  requirements:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 1.18.3
110
+ version: 1.25.1
111
111
  type: :development
112
112
  prerelease: false
113
113
  version_requirements: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - '='
116
116
  - !ruby/object:Gem::Version
117
- version: 1.18.3
117
+ version: 1.25.1
118
118
  - !ruby/object:Gem::Dependency
119
119
  name: webmock
120
120
  requirement: !ruby/object:Gem::Requirement
@@ -135,14 +135,14 @@ dependencies:
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 0.11.2
138
+ version: 0.12.0
139
139
  type: :development
140
140
  prerelease: false
141
141
  version_requirements: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 0.11.2
145
+ version: 0.12.0
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: ougai
148
148
  requirement: !ruby/object:Gem::Requirement
@@ -227,7 +227,7 @@ homepage: https://github.com/drivy
227
227
  licenses:
228
228
  - MIT
229
229
  metadata: {}
230
- post_install_message:
230
+ post_install_message:
231
231
  rdoc_options: []
232
232
  require_paths:
233
233
  - lib
@@ -235,15 +235,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
235
235
  requirements:
236
236
  - - ">="
237
237
  - !ruby/object:Gem::Version
238
- version: '2.6'
238
+ version: '2.7'
239
239
  required_rubygems_version: !ruby/object:Gem::Requirement
240
240
  requirements:
241
241
  - - ">="
242
242
  - !ruby/object:Gem::Version
243
243
  version: '0'
244
244
  requirements: []
245
- rubygems_version: 3.0.3.1
246
- signing_key:
245
+ rubygems_version: 3.1.6
246
+ signing_key:
247
247
  specification_version: 4
248
248
  summary: Backend shared utility classes
249
249
  test_files: []