prosopite 1.0.6 → 1.0.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/.github/workflows/ci.yml +1 -1
- data/Gemfile.lock +1 -1
- data/README.md +29 -5
- data/lib/prosopite/version.rb +1 -1
- data/lib/prosopite.rb +6 -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: dc0695c895e2f636c3c2a2caa2c4b211cad0f7d57f8bd4842fbc534ba9e55190
|
4
|
+
data.tar.gz: 2dcd4426e5b792a58cee89ec601e3388bacc97cb0de57aa3b87dd7600dd6b020
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2c1c6a4723c44c24ab800fede6c14d49f74ba1c97c4aa60c59a231725e001ca45416abb878331157402582114e144931e39774a9af51fb422d12ba4f668403b
|
7
|
+
data.tar.gz: 2175b7c1bd661c5bca41c1263e9a750d63b205e548ef1d2f13ca2aac43c6306eaad3e3bb8420e627ab2576821565311c525e6b51576b4e30431c41420b3b7f0b
|
data/.github/workflows/ci.yml
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -115,10 +115,34 @@ Or install it yourself as:
|
|
115
115
|
|
116
116
|
The preferred type of notifications can be configured with:
|
117
117
|
|
118
|
+
* `Prosopite.raise = true`: Raise warnings as exceptions
|
118
119
|
* `Prosopite.rails_logger = true`: Send warnings to the Rails log
|
119
120
|
* `Prosopite.prosopite_logger = true`: Send warnings to `log/prosopite.log`
|
120
121
|
* `Prosopite.stderr_logger = true`: Send warnings to STDERR
|
121
|
-
* `Prosopite.
|
122
|
+
* `Prosopite.custom_logger = my_custom_logger`:
|
123
|
+
|
124
|
+
### Custom Logging Configuration
|
125
|
+
|
126
|
+
You can supply a custom logger with the `Prosopite.custom_logger` setting.
|
127
|
+
|
128
|
+
This is useful for circumstances where you don't want your logs to be
|
129
|
+
highlighted with red, or you want logs sent to a custom location.
|
130
|
+
|
131
|
+
One common scenario is that you may be generating json logs and sending them to
|
132
|
+
Datadog, ELK stack, or similar, and don't want to have to remove the default red
|
133
|
+
escaping data from messages sent to the Rails logger, or want to tag them
|
134
|
+
differently with your own custom logger.
|
135
|
+
|
136
|
+
```ruby
|
137
|
+
# Turns off logging with red highlights, but still sends them to the Rails logger
|
138
|
+
Prosopite.custom_logger = Rails.logger
|
139
|
+
```
|
140
|
+
|
141
|
+
```ruby
|
142
|
+
# Use a completely custom logging instance
|
143
|
+
Prosopite.custom_logger = MyLoggerClass.new
|
144
|
+
|
145
|
+
```
|
122
146
|
|
123
147
|
## Development Environment Usage
|
124
148
|
|
@@ -128,7 +152,7 @@ Prosopite auto-detection can be enabled on all controllers:
|
|
128
152
|
class ApplicationController < ActionController::Base
|
129
153
|
unless Rails.env.production?
|
130
154
|
around_action :n_plus_one_detection
|
131
|
-
|
155
|
+
|
132
156
|
def n_plus_one_detection
|
133
157
|
Prosopite.scan
|
134
158
|
yield
|
@@ -179,10 +203,10 @@ WARNING: scan/finish should run before/after **each** test and NOT before/after
|
|
179
203
|
|
180
204
|
## Allow list
|
181
205
|
|
182
|
-
Ignore notifications for call stacks containing one or more substrings:
|
206
|
+
Ignore notifications for call stacks containing one or more substrings / regex:
|
183
207
|
|
184
208
|
```ruby
|
185
|
-
Prosopite.allow_stack_paths = ['substring_in_call_stack']
|
209
|
+
Prosopite.allow_stack_paths = ['substring_in_call_stack', /regex/]
|
186
210
|
```
|
187
211
|
|
188
212
|
Ignore notifications matching a specific SQL query:
|
@@ -201,7 +225,7 @@ Prosopite.scan
|
|
201
225
|
Prosopite.finish
|
202
226
|
```
|
203
227
|
|
204
|
-
or
|
228
|
+
or
|
205
229
|
|
206
230
|
```ruby
|
207
231
|
Prosopite.scan do
|
data/lib/prosopite/version.rb
CHANGED
data/lib/prosopite.rb
CHANGED
@@ -8,6 +8,7 @@ module Prosopite
|
|
8
8
|
:stderr_logger,
|
9
9
|
:rails_logger,
|
10
10
|
:prosopite_logger,
|
11
|
+
:custom_logger,
|
11
12
|
:allow_stack_paths,
|
12
13
|
:ignore_queries
|
13
14
|
|
@@ -50,7 +51,7 @@ module Prosopite
|
|
50
51
|
end
|
51
52
|
|
52
53
|
def resume
|
53
|
-
|
54
|
+
scan
|
54
55
|
end
|
55
56
|
|
56
57
|
def scan?
|
@@ -83,7 +84,7 @@ module Prosopite
|
|
83
84
|
|
84
85
|
kaller = tc[:prosopite_query_caller][location_key]
|
85
86
|
allow_list = (@allow_stack_paths + DEFAULT_ALLOW_LIST)
|
86
|
-
is_allowed = kaller.any? { |f| allow_list.any? { |s| f.
|
87
|
+
is_allowed = kaller.any? { |f| allow_list.any? { |s| f.match?(s) } }
|
87
88
|
|
88
89
|
unless is_allowed
|
89
90
|
queries = tc[:prosopite_query_holder][location_key]
|
@@ -155,6 +156,7 @@ module Prosopite
|
|
155
156
|
end
|
156
157
|
|
157
158
|
def send_notifications
|
159
|
+
@custom_logger ||= false
|
158
160
|
@rails_logger ||= false
|
159
161
|
@stderr_logger ||= false
|
160
162
|
@prosopite_logger ||= false
|
@@ -172,6 +174,8 @@ module Prosopite
|
|
172
174
|
notifications_str << "\n"
|
173
175
|
end
|
174
176
|
|
177
|
+
@custom_logger.warn(notifications_str) if @custom_logger
|
178
|
+
|
175
179
|
Rails.logger.warn(red(notifications_str)) if @rails_logger
|
176
180
|
$stderr.puts(red(notifications_str)) if @stderr_logger
|
177
181
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prosopite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mpampis Kostas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|