enhanced_errors 2.1.3 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardoc/checksums +4 -2
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/doc/Context.html +283 -0
- data/doc/Enhanced/Colors.html +1 -1
- data/doc/Enhanced.html +1 -1
- data/doc/EnhancedErrors.html +63 -61
- data/doc/EnhancedExceptionContext.html +397 -0
- data/doc/Exception.html +9 -139
- data/doc/ExceptionBindingInfos.html +255 -0
- data/doc/Minitest.html +1 -1
- data/doc/_index.html +16 -1
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +1 -1
- data/doc/index.html +1 -1
- data/doc/method_list.html +84 -36
- data/doc/top-level-namespace.html +3 -3
- data/enhanced_errors.gemspec +1 -1
- data/examples/demo_rspec.rb +0 -4
- data/lib/enhanced/context.rb +7 -0
- data/lib/enhanced/enhanced_exception_context.rb +47 -0
- data/lib/enhanced/exception.rb +15 -5
- data/lib/enhanced_errors.rb +6 -5
- metadata +7 -2
data/doc/method_list.html
CHANGED
@@ -73,23 +73,23 @@
|
|
73
73
|
|
74
74
|
<li class="even ">
|
75
75
|
<div class="item">
|
76
|
-
<span class='object_link'><a href="
|
77
|
-
<small>
|
76
|
+
<span class='object_link'><a href="Context.html#binding_infos-instance_method" title="Context#binding_infos (method)">#binding_infos</a></span>
|
77
|
+
<small>Context</small>
|
78
78
|
</div>
|
79
79
|
</li>
|
80
80
|
|
81
81
|
|
82
82
|
<li class="odd ">
|
83
83
|
<div class="item">
|
84
|
-
<span class='object_link'><a href="
|
85
|
-
<small>
|
84
|
+
<span class='object_link'><a href="ExceptionBindingInfos.html#binding_infos-instance_method" title="ExceptionBindingInfos#binding_infos (method)">#binding_infos</a></span>
|
85
|
+
<small>ExceptionBindingInfos</small>
|
86
86
|
</div>
|
87
87
|
</li>
|
88
88
|
|
89
89
|
|
90
90
|
<li class="even ">
|
91
91
|
<div class="item">
|
92
|
-
<span class='object_link'><a href="EnhancedErrors.html#
|
92
|
+
<span class='object_link'><a href="EnhancedErrors.html#binding_infos_array_to_string-class_method" title="EnhancedErrors.binding_infos_array_to_string (method)">binding_infos_array_to_string</a></span>
|
93
93
|
<small>EnhancedErrors</small>
|
94
94
|
</div>
|
95
95
|
</li>
|
@@ -97,7 +97,7 @@
|
|
97
97
|
|
98
98
|
<li class="odd ">
|
99
99
|
<div class="item">
|
100
|
-
<span class='object_link'><a href="EnhancedErrors.html#capture_events_count
|
100
|
+
<span class='object_link'><a href="EnhancedErrors.html#capture_events_count-class_method" title="EnhancedErrors.capture_events_count (method)">capture_events_count</a></span>
|
101
101
|
<small>EnhancedErrors</small>
|
102
102
|
</div>
|
103
103
|
</li>
|
@@ -105,7 +105,7 @@
|
|
105
105
|
|
106
106
|
<li class="even ">
|
107
107
|
<div class="item">
|
108
|
-
<span class='object_link'><a href="EnhancedErrors.html#
|
108
|
+
<span class='object_link'><a href="EnhancedErrors.html#capture_events_count=-class_method" title="EnhancedErrors.capture_events_count= (method)">capture_events_count=</a></span>
|
109
109
|
<small>EnhancedErrors</small>
|
110
110
|
</div>
|
111
111
|
</li>
|
@@ -113,7 +113,7 @@
|
|
113
113
|
|
114
114
|
<li class="odd ">
|
115
115
|
<div class="item">
|
116
|
-
<span class='object_link'><a href="EnhancedErrors.html#
|
116
|
+
<span class='object_link'><a href="EnhancedErrors.html#capture_limit_exceeded%3F-class_method" title="EnhancedErrors.capture_limit_exceeded? (method)">capture_limit_exceeded?</a></span>
|
117
117
|
<small>EnhancedErrors</small>
|
118
118
|
</div>
|
119
119
|
</li>
|
@@ -121,7 +121,7 @@
|
|
121
121
|
|
122
122
|
<li class="even ">
|
123
123
|
<div class="item">
|
124
|
-
<span class='object_link'><a href="EnhancedErrors.html#capture_rescue
|
124
|
+
<span class='object_link'><a href="EnhancedErrors.html#capture_rescue-class_method" title="EnhancedErrors.capture_rescue (method)">capture_rescue</a></span>
|
125
125
|
<small>EnhancedErrors</small>
|
126
126
|
</div>
|
127
127
|
</li>
|
@@ -129,13 +129,21 @@
|
|
129
129
|
|
130
130
|
<li class="odd ">
|
131
131
|
<div class="item">
|
132
|
-
<span class='object_link'><a href="
|
133
|
-
<small>
|
132
|
+
<span class='object_link'><a href="EnhancedErrors.html#capture_rescue=-class_method" title="EnhancedErrors.capture_rescue= (method)">capture_rescue=</a></span>
|
133
|
+
<small>EnhancedErrors</small>
|
134
134
|
</div>
|
135
135
|
</li>
|
136
136
|
|
137
137
|
|
138
138
|
<li class="even ">
|
139
|
+
<div class="item">
|
140
|
+
<span class='object_link'><a href="ExceptionBindingInfos.html#captured_variables-instance_method" title="ExceptionBindingInfos#captured_variables (method)">#captured_variables</a></span>
|
141
|
+
<small>ExceptionBindingInfos</small>
|
142
|
+
</div>
|
143
|
+
</li>
|
144
|
+
|
145
|
+
|
146
|
+
<li class="odd ">
|
139
147
|
<div class="item">
|
140
148
|
<span class='object_link'><a href="EnhancedErrors.html#class_to_string-class_method" title="EnhancedErrors.class_to_string (method)">class_to_string</a></span>
|
141
149
|
<small>EnhancedErrors</small>
|
@@ -143,7 +151,23 @@
|
|
143
151
|
</li>
|
144
152
|
|
145
153
|
|
154
|
+
<li class="even ">
|
155
|
+
<div class="item">
|
156
|
+
<span class='object_link'><a href="EnhancedExceptionContext.html#clear_all-instance_method" title="EnhancedExceptionContext#clear_all (method)">#clear_all</a></span>
|
157
|
+
<small>EnhancedExceptionContext</small>
|
158
|
+
</div>
|
159
|
+
</li>
|
160
|
+
|
161
|
+
|
146
162
|
<li class="odd ">
|
163
|
+
<div class="item">
|
164
|
+
<span class='object_link'><a href="EnhancedExceptionContext.html#clear_context-instance_method" title="EnhancedExceptionContext#clear_context (method)">#clear_context</a></span>
|
165
|
+
<small>EnhancedExceptionContext</small>
|
166
|
+
</div>
|
167
|
+
</li>
|
168
|
+
|
169
|
+
|
170
|
+
<li class="even ">
|
147
171
|
<div class="item">
|
148
172
|
<span class='object_link'><a href="Enhanced/Colors.html#code-class_method" title="Enhanced::Colors.code (method)">code</a></span>
|
149
173
|
<small>Enhanced::Colors</small>
|
@@ -151,7 +175,7 @@
|
|
151
175
|
</li>
|
152
176
|
|
153
177
|
|
154
|
-
<li class="
|
178
|
+
<li class="odd ">
|
155
179
|
<div class="item">
|
156
180
|
<span class='object_link'><a href="Enhanced/Colors.html#color-class_method" title="Enhanced::Colors.color (method)">color</a></span>
|
157
181
|
<small>Enhanced::Colors</small>
|
@@ -159,7 +183,7 @@
|
|
159
183
|
</li>
|
160
184
|
|
161
185
|
|
162
|
-
<li class="
|
186
|
+
<li class="even ">
|
163
187
|
<div class="item">
|
164
188
|
<span class='object_link'><a href="EnhancedErrors.html#config_block-class_method" title="EnhancedErrors.config_block (method)">config_block</a></span>
|
165
189
|
<small>EnhancedErrors</small>
|
@@ -167,6 +191,14 @@
|
|
167
191
|
</li>
|
168
192
|
|
169
193
|
|
194
|
+
<li class="odd ">
|
195
|
+
<div class="item">
|
196
|
+
<span class='object_link'><a href="EnhancedExceptionContext.html#context_for-instance_method" title="EnhancedExceptionContext#context_for (method)">#context_for</a></span>
|
197
|
+
<small>EnhancedExceptionContext</small>
|
198
|
+
</div>
|
199
|
+
</li>
|
200
|
+
|
201
|
+
|
170
202
|
<li class="even ">
|
171
203
|
<div class="item">
|
172
204
|
<span class='object_link'><a href="EnhancedErrors.html#convert_binding_to_binding_info-class_method" title="EnhancedErrors.convert_binding_to_binding_info (method)">convert_binding_to_binding_info</a></span>
|
@@ -264,6 +296,14 @@
|
|
264
296
|
|
265
297
|
|
266
298
|
<li class="even ">
|
299
|
+
<div class="item">
|
300
|
+
<span class='object_link'><a href="Context.html#initialize-instance_method" title="Context#initialize (method)">#initialize</a></span>
|
301
|
+
<small>Context</small>
|
302
|
+
</div>
|
303
|
+
</li>
|
304
|
+
|
305
|
+
|
306
|
+
<li class="odd ">
|
267
307
|
<div class="item">
|
268
308
|
<span class='object_link'><a href="EnhancedErrors.html#is_a_minitest%3F-class_method" title="EnhancedErrors.is_a_minitest? (method)">is_a_minitest?</a></span>
|
269
309
|
<small>EnhancedErrors</small>
|
@@ -271,7 +311,7 @@
|
|
271
311
|
</li>
|
272
312
|
|
273
313
|
|
274
|
-
<li class="
|
314
|
+
<li class="even ">
|
275
315
|
<div class="item">
|
276
316
|
<span class='object_link'><a href="EnhancedErrors.html#is_rspec_example%3F-class_method" title="EnhancedErrors.is_rspec_example? (method)">is_rspec_example?</a></span>
|
277
317
|
<small>EnhancedErrors</small>
|
@@ -279,7 +319,7 @@
|
|
279
319
|
</li>
|
280
320
|
|
281
321
|
|
282
|
-
<li class="
|
322
|
+
<li class="odd ">
|
283
323
|
<div class="item">
|
284
324
|
<span class='object_link'><a href="EnhancedErrors.html#max_capture_events-class_method" title="EnhancedErrors.max_capture_events (method)">max_capture_events</a></span>
|
285
325
|
<small>EnhancedErrors</small>
|
@@ -287,7 +327,7 @@
|
|
287
327
|
</li>
|
288
328
|
|
289
329
|
|
290
|
-
<li class="
|
330
|
+
<li class="even ">
|
291
331
|
<div class="item">
|
292
332
|
<span class='object_link'><a href="EnhancedErrors.html#max_capture_events=-class_method" title="EnhancedErrors.max_capture_events= (method)">max_capture_events=</a></span>
|
293
333
|
<small>EnhancedErrors</small>
|
@@ -295,7 +335,7 @@
|
|
295
335
|
</li>
|
296
336
|
|
297
337
|
|
298
|
-
<li class="
|
338
|
+
<li class="odd ">
|
299
339
|
<div class="item">
|
300
340
|
<span class='object_link'><a href="EnhancedErrors.html#max_length-class_method" title="EnhancedErrors.max_length (method)">max_length</a></span>
|
301
341
|
<small>EnhancedErrors</small>
|
@@ -303,7 +343,7 @@
|
|
303
343
|
</li>
|
304
344
|
|
305
345
|
|
306
|
-
<li class="
|
346
|
+
<li class="even ">
|
307
347
|
<div class="item">
|
308
348
|
<span class='object_link'><a href="EnhancedErrors.html#mutex-class_method" title="EnhancedErrors.mutex (method)">mutex</a></span>
|
309
349
|
<small>EnhancedErrors</small>
|
@@ -311,7 +351,7 @@
|
|
311
351
|
</li>
|
312
352
|
|
313
353
|
|
314
|
-
<li class="
|
354
|
+
<li class="odd ">
|
315
355
|
<div class="item">
|
316
356
|
<span class='object_link'><a href="EnhancedErrors.html#on_capture-class_method" title="EnhancedErrors.on_capture (method)">on_capture</a></span>
|
317
357
|
<small>EnhancedErrors</small>
|
@@ -319,7 +359,7 @@
|
|
319
359
|
</li>
|
320
360
|
|
321
361
|
|
322
|
-
<li class="
|
362
|
+
<li class="even ">
|
323
363
|
<div class="item">
|
324
364
|
<span class='object_link'><a href="EnhancedErrors.html#on_capture=-class_method" title="EnhancedErrors.on_capture= (method)">on_capture=</a></span>
|
325
365
|
<small>EnhancedErrors</small>
|
@@ -327,7 +367,7 @@
|
|
327
367
|
</li>
|
328
368
|
|
329
369
|
|
330
|
-
<li class="
|
370
|
+
<li class="odd ">
|
331
371
|
<div class="item">
|
332
372
|
<span class='object_link'><a href="EnhancedErrors.html#on_capture_hook-class_method" title="EnhancedErrors.on_capture_hook (method)">on_capture_hook</a></span>
|
333
373
|
<small>EnhancedErrors</small>
|
@@ -335,7 +375,7 @@
|
|
335
375
|
</li>
|
336
376
|
|
337
377
|
|
338
|
-
<li class="
|
378
|
+
<li class="even ">
|
339
379
|
<div class="item">
|
340
380
|
<span class='object_link'><a href="EnhancedErrors.html#on_format-class_method" title="EnhancedErrors.on_format (method)">on_format</a></span>
|
341
381
|
<small>EnhancedErrors</small>
|
@@ -343,7 +383,7 @@
|
|
343
383
|
</li>
|
344
384
|
|
345
385
|
|
346
|
-
<li class="
|
386
|
+
<li class="odd ">
|
347
387
|
<div class="item">
|
348
388
|
<span class='object_link'><a href="EnhancedErrors.html#on_format=-class_method" title="EnhancedErrors.on_format= (method)">on_format=</a></span>
|
349
389
|
<small>EnhancedErrors</small>
|
@@ -351,7 +391,7 @@
|
|
351
391
|
</li>
|
352
392
|
|
353
393
|
|
354
|
-
<li class="
|
394
|
+
<li class="even ">
|
355
395
|
<div class="item">
|
356
396
|
<span class='object_link'><a href="Minitest.html#original_run_one_method-class_method" title="Minitest.original_run_one_method (method)">original_run_one_method</a></span>
|
357
397
|
<small>Minitest</small>
|
@@ -359,7 +399,7 @@
|
|
359
399
|
</li>
|
360
400
|
|
361
401
|
|
362
|
-
<li class="
|
402
|
+
<li class="odd ">
|
363
403
|
<div class="item">
|
364
404
|
<span class='object_link'><a href="EnhancedErrors.html#override_exception_message-class_method" title="EnhancedErrors.override_exception_message (method)">override_exception_message</a></span>
|
365
405
|
<small>EnhancedErrors</small>
|
@@ -367,7 +407,7 @@
|
|
367
407
|
</li>
|
368
408
|
|
369
409
|
|
370
|
-
<li class="
|
410
|
+
<li class="even ">
|
371
411
|
<div class="item">
|
372
412
|
<span class='object_link'><a href="EnhancedErrors.html#override_messages-class_method" title="EnhancedErrors.override_messages (method)">override_messages</a></span>
|
373
413
|
<small>EnhancedErrors</small>
|
@@ -375,7 +415,7 @@
|
|
375
415
|
</li>
|
376
416
|
|
377
417
|
|
378
|
-
<li class="
|
418
|
+
<li class="odd ">
|
379
419
|
<div class="item">
|
380
420
|
<span class='object_link'><a href="EnhancedErrors.html#override_rspec_message-class_method" title="EnhancedErrors.override_rspec_message (method)">override_rspec_message</a></span>
|
381
421
|
<small>EnhancedErrors</small>
|
@@ -383,7 +423,7 @@
|
|
383
423
|
</li>
|
384
424
|
|
385
425
|
|
386
|
-
<li class="
|
426
|
+
<li class="even ">
|
387
427
|
<div class="item">
|
388
428
|
<span class='object_link'><a href="EnhancedErrors.html#reset!-class_method" title="EnhancedErrors.reset! (method)">reset!</a></span>
|
389
429
|
<small>EnhancedErrors</small>
|
@@ -391,7 +431,7 @@
|
|
391
431
|
</li>
|
392
432
|
|
393
433
|
|
394
|
-
<li class="
|
434
|
+
<li class="odd ">
|
395
435
|
<div class="item">
|
396
436
|
<span class='object_link'><a href="Minitest.html#run_one_method-class_method" title="Minitest.run_one_method (method)">run_one_method</a></span>
|
397
437
|
<small>Minitest</small>
|
@@ -399,7 +439,7 @@
|
|
399
439
|
</li>
|
400
440
|
|
401
441
|
|
402
|
-
<li class="
|
442
|
+
<li class="even ">
|
403
443
|
<div class="item">
|
404
444
|
<span class='object_link'><a href="EnhancedErrors.html#running_in_ci%3F-class_method" title="EnhancedErrors.running_in_ci? (method)">running_in_ci?</a></span>
|
405
445
|
<small>EnhancedErrors</small>
|
@@ -407,7 +447,7 @@
|
|
407
447
|
</li>
|
408
448
|
|
409
449
|
|
410
|
-
<li class="
|
450
|
+
<li class="odd ">
|
411
451
|
<div class="item">
|
412
452
|
<span class='object_link'><a href="EnhancedErrors.html#safe_prepend_module-class_method" title="EnhancedErrors.safe_prepend_module (method)">safe_prepend_module</a></span>
|
413
453
|
<small>EnhancedErrors</small>
|
@@ -415,7 +455,7 @@
|
|
415
455
|
</li>
|
416
456
|
|
417
457
|
|
418
|
-
<li class="
|
458
|
+
<li class="even ">
|
419
459
|
<div class="item">
|
420
460
|
<span class='object_link'><a href="EnhancedErrors.html#skip_list-class_method" title="EnhancedErrors.skip_list (method)">skip_list</a></span>
|
421
461
|
<small>EnhancedErrors</small>
|
@@ -423,7 +463,7 @@
|
|
423
463
|
</li>
|
424
464
|
|
425
465
|
|
426
|
-
<li class="
|
466
|
+
<li class="odd ">
|
427
467
|
<div class="item">
|
428
468
|
<span class='object_link'><a href="EnhancedErrors.html#start_minitest_binding_capture-class_method" title="EnhancedErrors.start_minitest_binding_capture (method)">start_minitest_binding_capture</a></span>
|
429
469
|
<small>EnhancedErrors</small>
|
@@ -431,7 +471,7 @@
|
|
431
471
|
</li>
|
432
472
|
|
433
473
|
|
434
|
-
<li class="
|
474
|
+
<li class="even ">
|
435
475
|
<div class="item">
|
436
476
|
<span class='object_link'><a href="EnhancedErrors.html#start_rspec_binding_capture-class_method" title="EnhancedErrors.start_rspec_binding_capture (method)">start_rspec_binding_capture</a></span>
|
437
477
|
<small>EnhancedErrors</small>
|
@@ -439,7 +479,7 @@
|
|
439
479
|
</li>
|
440
480
|
|
441
481
|
|
442
|
-
<li class="
|
482
|
+
<li class="odd ">
|
443
483
|
<div class="item">
|
444
484
|
<span class='object_link'><a href="EnhancedErrors.html#stop_minitest_binding_capture-class_method" title="EnhancedErrors.stop_minitest_binding_capture (method)">stop_minitest_binding_capture</a></span>
|
445
485
|
<small>EnhancedErrors</small>
|
@@ -447,7 +487,7 @@
|
|
447
487
|
</li>
|
448
488
|
|
449
489
|
|
450
|
-
<li class="
|
490
|
+
<li class="even ">
|
451
491
|
<div class="item">
|
452
492
|
<span class='object_link'><a href="EnhancedErrors.html#stop_rspec_binding_capture-class_method" title="EnhancedErrors.stop_rspec_binding_capture (method)">stop_rspec_binding_capture</a></span>
|
453
493
|
<small>EnhancedErrors</small>
|
@@ -455,6 +495,14 @@
|
|
455
495
|
</li>
|
456
496
|
|
457
497
|
|
498
|
+
<li class="odd ">
|
499
|
+
<div class="item">
|
500
|
+
<span class='object_link'><a href="EnhancedExceptionContext.html#store_context-instance_method" title="EnhancedExceptionContext#store_context (method)">#store_context</a></span>
|
501
|
+
<small>EnhancedExceptionContext</small>
|
502
|
+
</div>
|
503
|
+
</li>
|
504
|
+
|
505
|
+
|
458
506
|
<li class="even ">
|
459
507
|
<div class="item">
|
460
508
|
<span class='object_link'><a href="EnhancedErrors.html#validate_binding_format-class_method" title="EnhancedErrors.validate_binding_format (method)">validate_binding_format</a></span>
|
@@ -82,11 +82,11 @@
|
|
82
82
|
<p class="children">
|
83
83
|
|
84
84
|
|
85
|
-
<strong class="modules">Modules:</strong> <span class='object_link'><a href="Enhanced.html" title="Enhanced (module)">Enhanced</a></span>, <span class='object_link'><a href="Minitest.html" title="Minitest (module)">Minitest</a></span>
|
85
|
+
<strong class="modules">Modules:</strong> <span class='object_link'><a href="Enhanced.html" title="Enhanced (module)">Enhanced</a></span>, <span class='object_link'><a href="EnhancedExceptionContext.html" title="EnhancedExceptionContext (module)">EnhancedExceptionContext</a></span>, <span class='object_link'><a href="ExceptionBindingInfos.html" title="ExceptionBindingInfos (module)">ExceptionBindingInfos</a></span>, <span class='object_link'><a href="Minitest.html" title="Minitest (module)">Minitest</a></span>
|
86
86
|
|
87
87
|
|
88
88
|
|
89
|
-
<strong class="classes">Classes:</strong> <span class='object_link'><a href="EnhancedErrors.html" title="EnhancedErrors (class)">EnhancedErrors</a></span>, <span class='object_link'><a href="Exception.html" title="Exception (class)">Exception</a></span>
|
89
|
+
<strong class="classes">Classes:</strong> <span class='object_link'><a href="Context.html" title="Context (class)">Context</a></span>, <span class='object_link'><a href="EnhancedErrors.html" title="EnhancedErrors (class)">EnhancedErrors</a></span>, <span class='object_link'><a href="Exception.html" title="Exception (class)">Exception</a></span>
|
90
90
|
|
91
91
|
|
92
92
|
</p>
|
@@ -122,7 +122,7 @@
|
|
122
122
|
</div>
|
123
123
|
|
124
124
|
<div id="footer">
|
125
|
-
Generated on
|
125
|
+
Generated on Tue Dec 17 14:09:26 2024 by
|
126
126
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
127
127
|
0.9.37 (ruby-3.3.6).
|
128
128
|
</div>
|
data/enhanced_errors.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "enhanced_errors"
|
3
|
-
spec.version = "2.
|
3
|
+
spec.version = "2.2.0"
|
4
4
|
spec.authors = ["Eric Beland"]
|
5
5
|
|
6
6
|
spec.summary = "Automatically enhance your errors with messages containing variable values from the moment they were raised."
|
data/examples/demo_rspec.rb
CHANGED
@@ -14,10 +14,6 @@ RSpec.configure do |config|
|
|
14
14
|
EnhancedErrors.start_rspec_binding_capture
|
15
15
|
end
|
16
16
|
|
17
|
-
config.before(:example) do |_example|
|
18
|
-
EnhancedErrors.start_rspec_binding_capture
|
19
|
-
end
|
20
|
-
|
21
17
|
config.after(:example) do |example|
|
22
18
|
EnhancedErrors.override_rspec_message(example, EnhancedErrors.stop_rspec_binding_capture)
|
23
19
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'weakref'
|
2
|
+
|
3
|
+
require_relative 'context'
|
4
|
+
|
5
|
+
require 'weakref'
|
6
|
+
require 'monitor'
|
7
|
+
|
8
|
+
module EnhancedExceptionContext
|
9
|
+
extend self
|
10
|
+
|
11
|
+
REGISTRY = {}
|
12
|
+
MUTEX = Monitor.new
|
13
|
+
|
14
|
+
def store_context(exception, context)
|
15
|
+
MUTEX.synchronize do
|
16
|
+
REGISTRY[exception.object_id] = { weak_exc: WeakRef.new(exception), context: context }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def context_for(exception)
|
21
|
+
MUTEX.synchronize do
|
22
|
+
entry = REGISTRY[exception.object_id]
|
23
|
+
return nil unless entry
|
24
|
+
|
25
|
+
begin
|
26
|
+
_ = entry[:weak_exc].__getobj__ # ensure exception is still alive
|
27
|
+
entry[:context]
|
28
|
+
rescue RefError
|
29
|
+
# Exception no longer alive, clean up
|
30
|
+
REGISTRY.delete(exception.object_id)
|
31
|
+
nil
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def clear_context(exception)
|
37
|
+
MUTEX.synchronize do
|
38
|
+
REGISTRY.delete(exception.object_id)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def clear_all
|
43
|
+
MUTEX.synchronize do
|
44
|
+
REGISTRY.clear
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/enhanced/exception.rb
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
# exception.rb
|
2
|
+
require_relative 'enhanced_exception_context'
|
3
|
+
|
4
|
+
module ExceptionBindingInfos
|
5
|
+
def binding_infos
|
6
|
+
ctx = EnhancedExceptionContext.context_for(self)
|
7
|
+
unless ctx
|
8
|
+
ctx = Context.new
|
9
|
+
EnhancedExceptionContext.store_context(self, ctx)
|
10
|
+
end
|
11
|
+
ctx.binding_infos
|
12
|
+
end
|
2
13
|
|
3
|
-
class Exception
|
4
14
|
def captured_variables
|
5
15
|
if binding_infos.any?
|
6
16
|
bindings_of_interest = select_binding_infos
|
@@ -12,10 +22,6 @@ class Exception
|
|
12
22
|
''
|
13
23
|
end
|
14
24
|
|
15
|
-
def binding_infos
|
16
|
-
@binding_infos ||= []
|
17
|
-
end
|
18
|
-
|
19
25
|
private
|
20
26
|
|
21
27
|
def select_binding_infos
|
@@ -43,3 +49,7 @@ class Exception
|
|
43
49
|
bindings_of_interest.compact
|
44
50
|
end
|
45
51
|
end
|
52
|
+
|
53
|
+
class Exception
|
54
|
+
prepend ExceptionBindingInfos
|
55
|
+
end
|
data/lib/enhanced_errors.rb
CHANGED
@@ -202,15 +202,16 @@ class EnhancedErrors
|
|
202
202
|
when nil
|
203
203
|
return nil
|
204
204
|
when RSpec::Core::MultipleExceptionError
|
205
|
-
|
205
|
+
exception_obj.all_exceptions.each do |exception|
|
206
|
+
override_exception_message(exception, binding_or_bindings)
|
207
|
+
end
|
206
208
|
else
|
207
209
|
override_exception_message(exception_obj, binding_or_bindings)
|
208
210
|
end
|
209
|
-
|
210
211
|
end
|
211
212
|
|
212
213
|
def override_exception_message(exception, binding_or_bindings)
|
213
|
-
return nil unless exception
|
214
|
+
return nil unless exception && exception.respond_to?(:message)
|
214
215
|
rspec_binding = !(binding_or_bindings.nil? || binding_or_bindings.empty?)
|
215
216
|
exception_binding = (exception.binding_infos.length > 0)
|
216
217
|
has_message = !(exception.respond_to?(:unaltered_message))
|
@@ -225,7 +226,6 @@ class EnhancedErrors
|
|
225
226
|
exception.define_singleton_method(:message) do
|
226
227
|
"#{message_str}#{variable_str}"
|
227
228
|
end
|
228
|
-
exception
|
229
229
|
end
|
230
230
|
|
231
231
|
def add_to_skip_list(*vars)
|
@@ -304,6 +304,7 @@ class EnhancedErrors
|
|
304
304
|
end
|
305
305
|
|
306
306
|
def start_minitest_binding_capture
|
307
|
+
EnhancedExceptionContext.clear_all
|
307
308
|
return if enforce_capture_limit
|
308
309
|
@enabled = true if @enabled.nil?
|
309
310
|
mutex.synchronize do
|
@@ -385,7 +386,7 @@ class EnhancedErrors
|
|
385
386
|
binding_info = convert_binding_to_binding_info(@rspec_example_binding) if @rspec_example_binding
|
386
387
|
@capture_next_binding = false
|
387
388
|
@rspec_example_binding = nil
|
388
|
-
binding_info
|
389
|
+
return binding_info
|
389
390
|
end
|
390
391
|
end
|
391
392
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enhanced_errors
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Beland
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-12-
|
11
|
+
date: 2024-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|
@@ -84,12 +84,15 @@ files:
|
|
84
84
|
- benchmark/benchmark.rb
|
85
85
|
- benchmark/memory_bench.rb
|
86
86
|
- benchmark/stackprofile.rb
|
87
|
+
- doc/Context.html
|
87
88
|
- doc/Enhanced.html
|
88
89
|
- doc/Enhanced/Colors.html
|
89
90
|
- doc/Enhanced/Integrations.html
|
90
91
|
- doc/Enhanced/Integrations/RSpecErrorFailureMessage.html
|
91
92
|
- doc/EnhancedErrors.html
|
93
|
+
- doc/EnhancedExceptionContext.html
|
92
94
|
- doc/Exception.html
|
95
|
+
- doc/ExceptionBindingInfos.html
|
93
96
|
- doc/Minitest.html
|
94
97
|
- doc/_index.html
|
95
98
|
- doc/class_list.html
|
@@ -113,6 +116,8 @@ files:
|
|
113
116
|
- examples/demo_minitest.rb
|
114
117
|
- examples/demo_rspec.rb
|
115
118
|
- lib/enhanced/colors.rb
|
119
|
+
- lib/enhanced/context.rb
|
120
|
+
- lib/enhanced/enhanced_exception_context.rb
|
116
121
|
- lib/enhanced/exception.rb
|
117
122
|
- lib/enhanced/minitest_patch.rb
|
118
123
|
- lib/enhanced_errors.rb
|