prosopite 1.0.8 → 1.1.2
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 +1 -1
- data/README.md +49 -3
- data/lib/prosopite/version.rb +1 -1
- data/lib/prosopite.rb +17 -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: 56e92147fb7087e1f4248449f64fa9a1e991c1d3646f71e54d74f72f2ccc98c9
|
4
|
+
data.tar.gz: c77c7bc6e0b856de8d634f331b9e8cc56f79359921258ba3a033b374c673b4f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5da98b794a360629a55c940dfb73972acc2a4871840fc5577abf346e9fd31d4077dfdc27b874c86ce1aeed179246ae74e47082aa8bf893083327e347df8020e
|
7
|
+
data.tar.gz: d74e37b39e303c552e087d53dd3aee596ad441d62a2ae6d48f166c0d2452eab01925639b26c0980e1d697dcd6c05d1c9cae7da8484e159ec27355c2cc8a294fb
|
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
|
|
@@ -201,11 +225,19 @@ Prosopite.scan
|
|
201
225
|
Prosopite.finish
|
202
226
|
```
|
203
227
|
|
204
|
-
|
228
|
+
In block form the `Prosopite.finish` is called automatically for you at the end of the block:
|
205
229
|
|
206
230
|
```ruby
|
207
231
|
Prosopite.scan do
|
208
|
-
<code to scan>
|
232
|
+
<code to scan>
|
233
|
+
end
|
234
|
+
```
|
235
|
+
|
236
|
+
The result of the code block is also returned by `Prosopite.scan`, so you can wrap calls as follows:
|
237
|
+
|
238
|
+
```ruby
|
239
|
+
my_object = Prosopite.scan do
|
240
|
+
MyObjectFactory.create(params)
|
209
241
|
end
|
210
242
|
```
|
211
243
|
|
@@ -223,6 +255,20 @@ Prosopite.resume
|
|
223
255
|
Prosopite.finish
|
224
256
|
```
|
225
257
|
|
258
|
+
You can also pause items in a block, and the `Prosopite.resume` will be done
|
259
|
+
for you automatically:
|
260
|
+
|
261
|
+
```ruby
|
262
|
+
Prosopite.scan
|
263
|
+
# <code to scan>
|
264
|
+
|
265
|
+
result = Prosopite.pause do
|
266
|
+
# <code that has n+1s>
|
267
|
+
end
|
268
|
+
|
269
|
+
Prosopite.finish
|
270
|
+
```
|
271
|
+
|
226
272
|
An example of when you might use this is if you are [testing Active Jobs inline](https://guides.rubyonrails.org/testing.html#testing-jobs),
|
227
273
|
and don't want to run Prosopite on background job code, just foreground app code. In that case you could write an [Active Job callback](https://edgeguides.rubyonrails.org/active_job_basics.html#callbacks) that pauses the scan while the job is running.
|
228
274
|
|
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
|
|
@@ -33,8 +34,9 @@ module Prosopite
|
|
33
34
|
|
34
35
|
if block_given?
|
35
36
|
begin
|
36
|
-
yield
|
37
|
+
block_result = yield
|
37
38
|
finish
|
39
|
+
block_result
|
38
40
|
ensure
|
39
41
|
tc[:prosopite_scan] = false
|
40
42
|
end
|
@@ -46,7 +48,17 @@ module Prosopite
|
|
46
48
|
end
|
47
49
|
|
48
50
|
def pause
|
49
|
-
|
51
|
+
if block_given?
|
52
|
+
begin
|
53
|
+
previous = tc[:prosopite_scan]
|
54
|
+
tc[:prosopite_scan] = false
|
55
|
+
yield
|
56
|
+
ensure
|
57
|
+
tc[:prosopite_scan] = previous
|
58
|
+
end
|
59
|
+
else
|
60
|
+
tc[:prosopite_scan] = false
|
61
|
+
end
|
50
62
|
end
|
51
63
|
|
52
64
|
def resume
|
@@ -155,6 +167,7 @@ module Prosopite
|
|
155
167
|
end
|
156
168
|
|
157
169
|
def send_notifications
|
170
|
+
@custom_logger ||= false
|
158
171
|
@rails_logger ||= false
|
159
172
|
@stderr_logger ||= false
|
160
173
|
@prosopite_logger ||= false
|
@@ -172,6 +185,8 @@ module Prosopite
|
|
172
185
|
notifications_str << "\n"
|
173
186
|
end
|
174
187
|
|
188
|
+
@custom_logger.warn(notifications_str) if @custom_logger
|
189
|
+
|
175
190
|
Rails.logger.warn(red(notifications_str)) if @rails_logger
|
176
191
|
$stderr.puts(red(notifications_str)) if @stderr_logger
|
177
192
|
|
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.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mpampis Kostas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|