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 +4 -4
- data/.yardoc/checksums +4 -4
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/README.md +99 -96
- data/doc/Enhanced/Colors.html +24 -17
- data/doc/Enhanced.html +2 -6
- data/doc/EnhancedErrors.html +1764 -888
- data/doc/Exception.html +1 -1
- data/doc/Minitest.html +238 -0
- data/doc/_index.html +4 -21
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +74 -78
- data/doc/images/enhance.png +0 -0
- data/doc/images/enhanced-error.png +0 -0
- data/doc/images/enhanced-spec.png +0 -0
- data/doc/index.html +74 -78
- data/doc/method_list.html +125 -13
- data/doc/top-level-namespace.html +2 -2
- data/enhanced_errors.gemspec +4 -1
- data/examples/{division_by_zero_example.rb → demo_exception_enhancement.rb} +3 -1
- data/examples/demo_minitest.rb +22 -0
- data/examples/demo_rspec.rb +56 -0
- data/lib/enhanced/minitest_patch.rb +17 -0
- data/lib/enhanced_errors.rb +408 -226
- metadata +24 -5
- data/examples/demo_spec.rb +0 -32
- data/examples/example_spec.rb +0 -47
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 636b9fff23b9913fd382737267930a6f33f17c30bd54fc889ac85b308b4a30c9
|
4
|
+
data.tar.gz: 5e786beb7ff2cf30e603ce7c1cc70b51734adb0217b36f0317187b937036cda7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da7858a0bd808e2a69a25c4e986017fd43eb3c6db2e2c6767d809a47fcad40bf1a874b77c3a64b284c9e4ce7154fbbe3cf5b890b12d84285aa2fcb511d86e97b
|
7
|
+
data.tar.gz: dfc678ff9757f83b3ca8988c663ea72ed8fc4830412f6274bd8f2090ee020498ed28947b523aa7ff904951c10176aa0780dde744e2380f04deb3b6fdb6cd3425
|
data/.yardoc/checksums
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
lib/colors.rb
|
2
|
-
lib/
|
3
|
-
lib/
|
4
|
-
lib/
|
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
|
data/.yardoc/objects/root.dat
CHANGED
Binary file
|
data/README.md
CHANGED
@@ -2,45 +2,13 @@
|
|
2
2
|
|
3
3
|
## Overview
|
4
4
|
|
5
|
-
**EnhancedErrors** is a
|
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
|
-
|
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
|
-
|
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
|
75
|
-
|
76
|
-
|
77
|
-
|
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
|
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
|
-
|
60
|
+
<br>
|
94
61
|
|
95
62
|
|
96
|
-
##
|
63
|
+
## MiniTest Setup
|
97
64
|
|
98
|
-
|
99
|
-
|
65
|
+
```ruby
|
66
|
+
require 'enhanced_errors'
|
67
|
+
require 'enhanced/minitest_patch'
|
100
68
|
|
101
|
-
|
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
|
-
|
105
|
-
|
106
|
-
|
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
|
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
|
-
*
|
141
|
-
|
142
|
-
*
|
143
|
-
|
144
|
-
*
|
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
|
-
|
184
|
-
It also overrides the .message to
|
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
|
-
|
188
|
-
a string describing what was found
|
191
|
+
but instead just use the exception.captured_variables, which is
|
192
|
+
a string describing what was found.
|
189
193
|
|
190
|
-
Note
|
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
|
-
|
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
|
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
|
-
|
425
|
+
EnhancedErrors is intended as an every-day driver for __non-interactive__ variable inspection.
|
425
426
|
|
426
|
-
|
427
|
-
To make that work, it has to be able to safely be 'on'
|
428
|
-
a way I naturally will
|
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
|
-
-
|
431
|
-
-
|
432
|
-
|
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.
|
438
|
-
Ruby's TracePoint binding capture very narrowly with no other C API or dependencies, and only to target
|
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
|
-
- **
|
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
|
|
data/doc/Enhanced/Colors.html
CHANGED
@@ -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'>"</span><span class='tstring_content'>\e[0m</span><span class='tstring_end'>"</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
|
-
|
246
|
-
|
247
|
-
|
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
|
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'>"</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'>"</span></span>
|
258
|
+
<span class='tstring'><span class='tstring_beg'>"</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'>"</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
|
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
|
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='
|
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'>"</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'>"</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
|
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
|
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
|
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
|
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
|
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
|
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
|
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>
|