enhanced_errors 2.0.6 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9e6ed241407a54376e0c64f2c1adc087e3dae4980ac5b7e84c947d92ff787392
4
- data.tar.gz: 4f949a5145869e73e7f795a9c009800433956162a6d25695c2a9e8ba3a39da05
3
+ metadata.gz: 636b9fff23b9913fd382737267930a6f33f17c30bd54fc889ac85b308b4a30c9
4
+ data.tar.gz: 5e786beb7ff2cf30e603ce7c1cc70b51734adb0217b36f0317187b937036cda7
5
5
  SHA512:
6
- metadata.gz: 02312f5287c4214c59b4b4a53e723d53d4dff511f24c335a7f7a84f049bb06638f77ea22f488cba5682fba66f581116b2bb1a4b3a79d8b6a5a290f5f822f1ea8
7
- data.tar.gz: 13d06fa670a3f34bb67624ec40bc9a87810536aace8c2867e64620092c13d8e48d25675241491d821491cb2f3a893c1d8faa2ede7ff2f22c45b50fb506fbbd74
6
+ metadata.gz: da7858a0bd808e2a69a25c4e986017fd43eb3c6db2e2c6767d809a47fcad40bf1a874b77c3a64b284c9e4ce7154fbbe3cf5b890b12d84285aa2fcb511d86e97b
7
+ data.tar.gz: dfc678ff9757f83b3ca8988c663ea72ed8fc4830412f6274bd8f2090ee020498ed28947b523aa7ff904951c10176aa0780dde744e2380f04deb3b6fdb6cd3425
data/.yardoc/checksums CHANGED
@@ -1,4 +1,4 @@
1
- lib/colors.rb a4314ef9531d4713907c3fea22955c943fdb8cf3
2
- lib/binding.rb fdd7d5a2dd2edde22e3b10773510738dcdce4aeb
3
- lib/enhanced_errors.rb d12ce0629f2565e5179ae5076be8a495e19ecda2
4
- lib/error_enhancements.rb a97d0f139d35f6e1b5bf49386271b1f4cf71761c
1
+ lib/enhanced/colors.rb ed3b11d00ff9ceed089d4a65f0be5b3fca64bbe6
2
+ lib/enhanced_errors.rb c327aefb93959d7bf567c751292a7513da14a7c6
3
+ lib/enhanced/exception.rb 72c62e85ce9cea875bc3e835240059bbf1b00f0b
4
+ lib/enhanced/minitest_patch.rb c8c934389dfa3789de66eeeacc8402a48a34d5b4
data/.yardoc/object_types CHANGED
Binary file
Binary file
data/README.md CHANGED
@@ -2,45 +2,13 @@
2
2
 
3
3
  ## Overview
4
4
 
5
- **EnhancedErrors** is a pure Ruby gem that enhances exceptions by capturing variables and their values from the scope where the error was raised.
5
+ **EnhancedErrors** is a lightweight Ruby gem that enhances exceptions by capturing variables and their values from the scope where the exception was raised.
6
6
 
7
7
  **EnhancedErrors** leverages Ruby's built-in [TracePoint](https://ruby-doc.org/core-3.1.0/TracePoint.html) feature to provide detailed context for exceptions, making debugging easier without significant performance overhead.
8
8
 
9
- When an exception is raised, EnhancedErrors captures the surrounding context. It works like this:
10
- <br>
9
+ EnhancedErrors captures exception context using either a test-framework integration (RSpec/Minitest) or a global enhancement for runtime exceptions.
11
10
 
12
- #### Enhanced Exception In Code:
13
-
14
- ```ruby
15
-
16
- require 'enhanced_errors'
17
- require 'awesome_print' # Optional, for better output
18
-
19
- # Enable capturing of variables at exception at raise-time. The .captured_variables method
20
- # is added to all Exceptions and gets populated with in-scope variables and values on `raise`
21
-
22
- EnhancedErrors.enhance_exceptions!
23
-
24
- def foo
25
- begin
26
- myvar = 0
27
- @myinstance = 10
28
- foo = @myinstance / myvar
29
- rescue => e
30
- puts e.captured_variables
31
- end
32
- end
33
-
34
- foo
35
- ```
36
-
37
- ##### Output:
38
-
39
- <img src="./doc/images/enhanced-error.png" style="height: 215px; width: 429px;"></img>
40
- <br>
41
-
42
-
43
- #### Enhanced Exception In Specs:
11
+ ### Enhanced Errors In RSpec:
44
12
 
45
13
  ```ruby
46
14
  describe 'sees through' do
@@ -64,17 +32,13 @@ end
64
32
 
65
33
  <img src="./doc/images/enhanced-spec.png" style="height: 369px; width: 712px;"></img>
66
34
 
67
- # RSpec Setup
68
35
 
69
- The simplest way to get started with EnhancedErrors is to use it for RSpec
70
- exception capturing. To get variable output into RSpec, the approach below
71
- enables capturing, but also gives nice output by formatting the failure message
72
- with the variable capture.
73
36
 
74
- The advantage of this approach is that it is only active for your spec runs.
75
- This approach is ideal for CI and local testing because it doesn't make
76
- any changes that should bleed through to production--it doesn't enhance
77
- exceptions except those that pass by during the RSpec run.
37
+ The RSpec test-time only approach constrained only to test-time.
38
+
39
+ ### RSpec Setup
40
+
41
+ Use EnhancedErrors with RSpec for test-specific exception capturing, ideal for CI and local testing without impacting production.
78
42
 
79
43
  ```ruby
80
44
 
@@ -83,27 +47,73 @@ RSpec.configure do |config|
83
47
  EnhancedErrors.start_rspec_binding_capture
84
48
  end
85
49
 
50
+ config.before(:example) do |_example|
51
+ EnhancedErrors.start_rspec_binding_capture
52
+ end
53
+
86
54
  config.after(:example) do |example|
87
- example.metadata[:expect_binding] = EnhancedErrors.stop_rspec_binding_capture
88
- EnhancedErrors.override_exception_message(example.exception, example.metadata[:expect_binding])
55
+ EnhancedErrors.override_rspec_message(example, EnhancedErrors.stop_rspec_binding_capture)
89
56
  end
90
57
  end
91
58
  ```
92
59
 
93
- ## TODO: Minitest
60
+ <br>
94
61
 
95
62
 
96
- ## Enhancing .message
63
+ ## MiniTest Setup
97
64
 
98
- EnhancedErrors can also append the captured variable description into the Exception's
99
- .message method output if the override_messages argument is true.
65
+ ```ruby
66
+ require 'enhanced_errors'
67
+ require 'enhanced/minitest_patch'
100
68
 
101
- This can be very convenient as it lets you capture and diagnose
102
- the context of totally unanticipated exceptions without modifying all your error handlers.
69
+ # Once the patch is loaded, it should just work!
103
70
 
104
- The downside to this approach is that if you have expectations in your tests/specs
105
- around exception messages, those may break. Also, if you are doing something with the error messages,
106
- like storing them in a database, they could be *much* longer and that may pose an issue.
71
+ ```
72
+
73
+ <br>
74
+
75
+ ### Enhanced Errors In Everyday Ruby Exceptions:
76
+
77
+ ```ruby
78
+
79
+ require 'enhanced_errors'
80
+ require 'awesome_print' # Optional, for better output
81
+
82
+ # Enable capturing of variables at exception at raise-time. The .captured_variables method
83
+ # is added to all Exceptions and gets populated with in-scope variables and values on `raise`
84
+
85
+ EnhancedErrors.enhance_exceptions!
86
+
87
+ def foo
88
+ begin
89
+ myvar = 0
90
+ @myinstance = 10
91
+ foo = @myinstance / myvar
92
+ rescue => e
93
+ puts e.captured_variables
94
+ end
95
+ end
96
+
97
+ foo
98
+ ```
99
+
100
+
101
+ ### Enhancing .message
102
+
103
+ EnhancedErrors can append the captured variable description onto every Exception's
104
+ .message method with
105
+ ```ruby
106
+ EnhancedErrors.enhance_exceptions(override_messages: true)
107
+ ```
108
+
109
+ This captures unanticipated exceptions without modifying all your error handlers.
110
+ This approach can be used to get detailed logs when problems happen in something like a cron-job.
111
+
112
+ The tradeoff of this approach is that if you have expectations in your tests/specs around
113
+ exception messages, those may break. Also, if you are doing something like storing the errors
114
+ in a database, they could be *much* longer and that may pose an issue on field lengths.
115
+ Or if you are writing your logs to Datadog, New Relic, Splunk, etc, log messages for
116
+ errors will be longer, and you should consider what data/PII you are sharing.
107
117
 
108
118
  Ideally, use exception.captured_variables instead.
109
119
 
@@ -112,6 +122,13 @@ EnhancedErrors.enhance_exceptions!(override_messages: true)
112
122
  ```
113
123
 
114
124
 
125
+ #### Output:
126
+
127
+ <img src="./doc/images/enhanced-error.png" style="height: 215px; width: 429px;"></img>
128
+ <br>
129
+
130
+
131
+
115
132
  ## Features
116
133
 
117
134
  - **Pure Ruby**: No external dependencies, C extensions, or C API calls.
@@ -124,26 +141,13 @@ EnhancedErrors.enhance_exceptions!(override_messages: true)
124
141
  - **No dependencies**: EnhancedErrors does not ___require___ any dependencies--it uses [awesome_print](https://github.com/awesome-print/awesome_print) for nicer output if it is installed and available.
125
142
  - **Lightweight**: Minimal performance impact, as tracing is only active during exception raising.
126
143
 
127
- EnhancedErrors has a few big use-cases:
128
-
129
- * **Catch Data-driven bugs**. For example, if, while processing a 10 gig file, you get an error, you can't just re-run the code with a debugger.
130
- You also can't just print out all the data, because it's too big. You want to know what the data was the cause of the error.
131
- Ideally, without long instrument-re-run-fix loops. If your logging didn't capture the data, normally, you'd be stuck.
132
-
133
- * **Debug** a complex application erroring deep in the stack when you can't tell where the error originates.
134
-
135
- * **Reduce MTTR** Reduce mean time to resolution.
136
-
137
- * **Faster CI -> Fix loop**. When a bug happens in CI, usually there's a step where you first reproduce it locally.
138
- EnhancedErrors can help you skip that step.
144
+ EnhancedErrors use-cases:
139
145
 
140
- * **Faster TDD**. In general, you can skip the add-instrumentation step and jump to the fix. Usually, you won't have to re-run to see an error.
141
-
142
- * **Heisenbugs** - bugs that disappear when you try to debug them. EnhancedErrors can help you capture the data that causes the bug before it disappears.
143
-
144
- * **Unknown Unknowns** - you can't pre-emptively log variables from failure cases you never imagined.
145
-
146
- * **Cron jobs** and **daemons** - when it fails for unknown reasons at 4am, check the log and fix--it probably has what you need. Note that
146
+ * Catch data-driven bugs without needing re-runs or extensive logging.
147
+ * Debug deep-stack errors and reduce mean time to resolution (MTTR).
148
+ * Handle CI failures faster by skipping reproduction steps.
149
+ * Address elusive "Heisenbugs" by capturing error context preemptively.
150
+ * Debug cron jobs and daemons with rich, failure-specific logs.
147
151
 
148
152
  ## Installation
149
153
 
@@ -180,14 +184,15 @@ EnhancedErrors.enhance_exceptions!(override_messages: true)
180
184
 
181
185
  ```
182
186
 
183
- The approach above activates the TracePoint to start capturing exceptions and their surrounding context.
184
- It also overrides the .message to have the variables.
187
+ This captures all exceptions and their surrounding context.
188
+ It also overrides the .message to display the variables.
185
189
 
186
190
  If modifying your exception handlers is an option, it is better *not* to use
187
- override_messages: true, but instead just use the exception.captured_variables, which is
188
- a string describing what was found, that is available regardless.
191
+ but instead just use the exception.captured_variables, which is
192
+ a string describing what was found.
189
193
 
190
- Note that a minimalistic approach is taken to generating the string--if no qualifying variables were present, you won't see any message!
194
+ Note: a minimalistic approach is taken to generating the capture string.
195
+ If no qualifying variables were present, you won't see any message additions!
191
196
 
192
197
  ### Configuration Options
193
198
 
@@ -205,9 +210,6 @@ end
205
210
  - `enabled`: Enables or disables the enhancement (default: `true`).
206
211
  - `max_length`: Sets the maximum length of the captured_variables string (default: `2500`).
207
212
 
208
- Currently, the first `raise` exception binding is presented.
209
- This may be changed in the future to allow more binding data to be presented.
210
-
211
213
 
212
214
  ### Environment-Based Defaults
213
215
 
@@ -338,8 +340,8 @@ SystemStackError Psych::BadAlias
338
340
 
339
341
  While this is close to "Things that don't descend from StandardError", it's not exactly that.
340
342
 
341
- In Info mode, variables starting with @_ are also ignored.
342
-
343
+ By default, many noisy instance variables are ignored in the default skip list.
344
+ If you want to see every instance variable, you'll need to clear out the skip list.
343
345
 
344
346
  ### Capture Levels
345
347
 
@@ -398,7 +400,6 @@ The captured data is available in .captured_variables, to provide context for de
398
400
  * There are benchmarks around Tracepoint in the benchmark folder. Targeted tracepoints
399
401
  seem to be very cheap--as in, you can hit them ten thousand+ times a second
400
402
  without heavy overhead.
401
- *
402
403
 
403
404
  ## Awesome Print
404
405
 
@@ -419,28 +420,30 @@ Why not use:
419
420
 
420
421
  [binding_of_caller](https://github.com/banister/binding_of_caller) or [Pry](https://github.com/pry/pry) or [better_errors](https://github.com/BetterErrors/better_errors)?
421
422
 
422
- First off, these gems are, I cannot stress this enough, a-m-a-z-i-n-g!!! I use them every day--kudos to their creators and maintainers!
423
+ First off, these gems are a-m-a-z-i-n-g!!! I use them every day--kudos to their creators and maintainers!
423
424
 
424
- This is intended for different use-cases. In sum, the goal of this gem is an every-day driver for __non-interactive__ variable inspection.
425
+ EnhancedErrors is intended as an every-day driver for __non-interactive__ variable inspection.
425
426
 
426
- With EnhancedErrors is that I want extra details when I run into a problem I __didn't anticipate ahead of time__.
427
- To make that work, it has to be able to safely be 'on' all the time, and it has to gather the data in
428
- a way I naturally will see it without requiring extra preparation I obviously didn't know to do.
427
+ I want extra details when I run into a problem I __didn't anticipate ahead of time__.
428
+ To make that work, it has to be able to safely be 'on' ahead of time, and gather data in
429
+ a way I naturally will retain without requiring extra preparation I obviously didn't know to do.
429
430
 
430
- - That won't interrupt CI, but also, that lets me know what happened without reproduction
431
- - That could, theoretically, also be fine in production (if data security, redaction, access, and encryption concerns were all addressed--Ok, big
432
- list, but another option is to selectively enable targeted capture)
431
+ - EnhancedErrors won't interrupt CI, but it lets me know what happened _without_ reproduction steps
432
+ - EnhancedErrors could, theoretically, also be fine in production (if data security, redaction,
433
+ PII, access, and encryption concerns were all addressed.
434
+ Big list, but another option is to selectively enable targeted capture.
433
435
  - Has decent performance characteristics
434
436
  - **Only** becomes active in exception raise/rescue scenarios
435
437
 
436
438
  This gem could have been implemented using binding_of_caller, or the gem it depends on, [debug_inspector](https://rubygems.org/gems/debug_inspector/versions/1.1.0?locale=en).
437
- However, the recommendation is not to use those in production as they use C API extensions. This doesn't. This selectively uses
438
- Ruby's TracePoint binding capture very narrowly with no other C API or dependencies, and only to target Exceptions--not to allow universal calls to the prior binding. It doesn't work as a debugger, but that also means it can, with care, operate safely in a narrow scope--becoming active only when exceptions are raised.
439
+ However, the recommendation is not to use those in production as they use C API extensions. This doesn't.
440
+ EnhancedErrors selectively uses Ruby's TracePoint binding capture very narrowly with no other C API or dependencies, and only to target
441
+ Exceptions. It operates in a narrow scope--becoming active only when exceptions are raised.
439
442
 
440
443
 
441
444
  ## Performance Considerations
442
445
 
443
- - **Minimal Overhead**: Since TracePoint is only activated during exception raising and rescuing, the performance impact is negligible during normal operation. (Benchmark included)
446
+ - **Small Overhead**: Since TracePoint is only activated during exception raising and rescuing, the performance impact is negligible during normal operation. (Benchmark included)
444
447
 
445
448
  - **TBD**: Memory considerations. This does capture data when an exception happens. EnhancedErrors hides under the bed when it sees **NoMemoryError**.
446
449
 
@@ -111,7 +111,12 @@
111
111
  <dt id="COLORS-constant" class="">COLORS =
112
112
 
113
113
  </dt>
114
- <dd><pre class="code"><span class='lbrace'>{</span> <span class='label'>red:</span> <span class='int'>31</span><span class='comma'>,</span> <span class='label'>green:</span> <span class='int'>32</span><span class='comma'>,</span> <span class='label'>yellow:</span> <span class='int'>33</span><span class='comma'>,</span> <span class='label'>blue:</span> <span class='int'>34</span><span class='comma'>,</span> <span class='label'>purple:</span> <span class='int'>35</span><span class='comma'>,</span> <span class='label'>cyan:</span> <span class='int'>36</span><span class='comma'>,</span> <span class='label'>white:</span> <span class='int'>0</span> <span class='rbrace'>}</span></pre></dd>
114
+ <dd><pre class="code"><span class='lbrace'>{</span> <span class='label'>red:</span> <span class='int'>31</span><span class='comma'>,</span> <span class='label'>green:</span> <span class='int'>32</span><span class='comma'>,</span> <span class='label'>yellow:</span> <span class='int'>33</span><span class='comma'>,</span> <span class='label'>blue:</span> <span class='int'>34</span><span class='comma'>,</span> <span class='label'>purple:</span> <span class='int'>35</span><span class='comma'>,</span> <span class='label'>cyan:</span> <span class='int'>36</span><span class='comma'>,</span> <span class='label'>white:</span> <span class='int'>0</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
115
+
116
+ <dt id="RESET_CODE-constant" class="">RESET_CODE =
117
+
118
+ </dt>
119
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\e[0m</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
115
120
 
116
121
  </dl>
117
122
 
@@ -242,15 +247,15 @@
242
247
  <pre class="lines">
243
248
 
244
249
 
245
- 18
246
- 19
247
- 20</pre>
250
+ 20
251
+ 21
252
+ 22</pre>
248
253
  </td>
249
254
  <td>
250
- <pre class="code"><span class="info file"># File 'lib/enhanced/colors.rb', line 18</span>
255
+ <pre class="code"><span class="info file"># File 'lib/enhanced/colors.rb', line 20</span>
251
256
 
252
257
  <span class='kw'>def</span> <span class='id identifier rubyid_code'>code</span><span class='lparen'>(</span><span class='id identifier rubyid_num'>num</span><span class='rparen'>)</span>
253
- <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\e[</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_num'>num</span><span class='embexpr_end'>}</span><span class='tstring_content'>m</span><span class='tstring_end'>&quot;</span></span>
258
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\e[</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_num'>num</span><span class='embexpr_end'>}</span><span class='tstring_content'>m</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span>
254
259
  <span class='kw'>end</span></pre>
255
260
  </td>
256
261
  </tr>
@@ -272,15 +277,17 @@
272
277
  <pre class="lines">
273
278
 
274
279
 
275
- 14
276
280
  15
277
- 16</pre>
281
+ 16
282
+ 17
283
+ 18</pre>
278
284
  </td>
279
285
  <td>
280
- <pre class="code"><span class="info file"># File 'lib/enhanced/colors.rb', line 14</span>
286
+ <pre class="code"><span class="info file"># File 'lib/enhanced/colors.rb', line 15</span>
281
287
 
282
288
  <span class='kw'>def</span> <span class='id identifier rubyid_color'>color</span><span class='lparen'>(</span><span class='id identifier rubyid_num'>num</span><span class='comma'>,</span> <span class='id identifier rubyid_string'>string</span><span class='rparen'>)</span>
283
- <span class='ivar'>@enabled</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_code'>code</span><span class='lparen'>(</span><span class='id identifier rubyid_num'>num</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_string'>string</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_code'>code</span><span class='lparen'>(</span><span class='int'>0</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span> <span class='op'>:</span> <span class='id identifier rubyid_string'>string</span>
289
+ <span class='kw'>return</span> <span class='id identifier rubyid_string'>string</span> <span class='kw'>unless</span> <span class='ivar'>@enabled</span>
290
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_code'>code</span><span class='lparen'>(</span><span class='id identifier rubyid_num'>num</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_string'>string</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='const'><span class='object_link'><a href="#RESET_CODE-constant" title="Enhanced::Colors::RESET_CODE (constant)">RESET_CODE</a></span></span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
284
291
  <span class='kw'>end</span></pre>
285
292
  </td>
286
293
  </tr>
@@ -302,12 +309,12 @@
302
309
  <pre class="lines">
303
310
 
304
311
 
305
- 10
306
312
  11
307
- 12</pre>
313
+ 12
314
+ 13</pre>
308
315
  </td>
309
316
  <td>
310
- <pre class="code"><span class="info file"># File 'lib/enhanced/colors.rb', line 10</span>
317
+ <pre class="code"><span class="info file"># File 'lib/enhanced/colors.rb', line 11</span>
311
318
 
312
319
  <span class='kw'>def</span> <span class='id identifier rubyid_enabled='>enabled=</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
313
320
  <span class='ivar'>@enabled</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
@@ -354,12 +361,12 @@
354
361
  <pre class="lines">
355
362
 
356
363
 
357
- 6
358
364
  7
359
- 8</pre>
365
+ 8
366
+ 9</pre>
360
367
  </td>
361
368
  <td>
362
- <pre class="code"><span class="info file"># File 'lib/enhanced/colors.rb', line 6</span>
369
+ <pre class="code"><span class="info file"># File 'lib/enhanced/colors.rb', line 7</span>
363
370
 
364
371
  <span class='kw'>def</span> <span class='id identifier rubyid_enabled?'>enabled?</span>
365
372
  <span class='ivar'>@enabled</span>
@@ -374,7 +381,7 @@
374
381
  </div>
375
382
 
376
383
  <div id="footer">
377
- Generated on Mon Dec 9 19:51:26 2024 by
384
+ Generated on Sun Dec 15 22:33:19 2024 by
378
385
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
379
386
  0.9.37 (ruby-3.1.3).
380
387
  </div>
data/doc/Enhanced.html CHANGED
@@ -83,9 +83,7 @@
83
83
 
84
84
  <dl>
85
85
  <dt>Defined in:</dt>
86
- <dd>lib/enhanced/colors.rb<span class="defines">,<br />
87
- lib/enhanced/integrations/rspec_error_failure_message.rb</span>
88
- </dd>
86
+ <dd>lib/enhanced/colors.rb</dd>
89
87
  </dl>
90
88
 
91
89
  </div>
@@ -94,8 +92,6 @@
94
92
  <p class="children">
95
93
 
96
94
 
97
- <strong class="modules">Modules:</strong> <span class='object_link'><a href="Enhanced/Integrations.html" title="Enhanced::Integrations (module)">Integrations</a></span>
98
-
99
95
 
100
96
 
101
97
  <strong class="classes">Classes:</strong> <span class='object_link'><a href="Enhanced/Colors.html" title="Enhanced::Colors (class)">Colors</a></span>
@@ -114,7 +110,7 @@
114
110
  </div>
115
111
 
116
112
  <div id="footer">
117
- Generated on Mon Dec 9 19:51:26 2024 by
113
+ Generated on Sun Dec 15 22:33:19 2024 by
118
114
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
119
115
  0.9.37 (ruby-3.1.3).
120
116
  </div>