enhanced_errors 0.1.2 → 0.1.4

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: b74f8777e19b73bcfd4024c4d3191abf98acfa397adaf99252b80cbbabf583af
4
- data.tar.gz: 47df87c1b8820fc1f0c0bdea2abe48ad4ed817472b22d8728328b52397e21b4c
3
+ metadata.gz: 8fe5b1005d924a2d75afc6603d81b9a858b44158a94f97e71381ee12f0d9f691
4
+ data.tar.gz: 8a574198151511f3b7774d95fb06217ba6739a258d8092724bd1fc2238071634
5
5
  SHA512:
6
- metadata.gz: c1db064f46691c84d3321b735c4bbf3258aa9d6f71a1611096cbe21d9a52bd67a352cc750a2fe16ad5f9fb46911fd4111e5166f4bb08844e28b80b64ba4af7ee
7
- data.tar.gz: cb1664d2de142e882f6d408817ac9c7a8b0bb14a54dedf30fa35fde05ba215bed7b42c17eef3109ffa4e7736f35f9eb937eac1c37a6d9a7278a6a989baff070f
6
+ metadata.gz: 5b6674b41ae75c55c5433ebd58cb3a214198183345993931f2a88e6df0eb58b2c0908ea1103c6c296a7899fb554570c65ec72d19c58377ef611718423810b83e
7
+ data.tar.gz: 5885b07b737a9758ec18bca9f55a7d0b305cb0b5300decd0250999dc08a2d470dcb014085db913af6fafab3b8b64e1e30dd8d6f54a5681dda491fee27fd3fb88
data/README.md CHANGED
@@ -337,7 +337,7 @@ gem 'awesome_print'
337
337
  ## Performance Considerations
338
338
 
339
339
  - **Minimal Overhead**: Since TracePoint is only activated during exception raising and rescuing, the performance impact is negligible during normal operation.
340
- - **Production Safe**: The gem is designed to be safe for production use, giving you valuable insights without compromising performance.
340
+ - **Production Safe**: The gem is designed to be safe for production use, giving you valuable insights without compromising performance. Although this is the case, I'd still suggest letting it get well-vetted before making the leap.
341
341
 
342
342
  ## Contributing
343
343
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "enhanced_errors"
3
- spec.version = "0.1.2"
3
+ spec.version = "0.1.4"
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."
@@ -13,4 +13,22 @@ def foo
13
13
  end
14
14
  end
15
15
 
16
+ def baz
17
+ i.dontexist
18
+ end
19
+
20
+ def boo
21
+ seeme = 'youshould'
22
+ baz
23
+ rescue => e
24
+ puts e.message
25
+ end
26
+
27
+
28
+ puts "\n--- Example with raise ---\n\n\n"
29
+
16
30
  foo
31
+
32
+ puts "\n--- Example with raise and rescue (requires ruby 3.2 or greater to see rescue) ---\n\n\n"
33
+
34
+ boo
@@ -335,7 +335,8 @@ class EnhancedErrors
335
335
  # @param binding_info [Hash] The binding information to format.
336
336
  # @return [String] The formatted string.
337
337
  def binding_info_string(binding_info)
338
- result = "\n#{Colors.green("#{binding_info[:capture_type].capitalize}: ")}#{Colors.blue(binding_info[:source])}"
338
+ capture_type = binding_info[:capture_type].to_s.capitalize
339
+ result = "#{Colors.red(capture_type)}: #{Colors.blue(binding_info[:source])}"
339
340
 
340
341
  result += method_and_args_desc(binding_info[:method_and_args])
341
342
 
@@ -363,7 +364,7 @@ class EnhancedErrors
363
364
  if result.length > max_length
364
365
  result = result[0...max_length] + "... (truncated)"
365
366
  end
366
- result + "\n\n"
367
+ result + "\n"
367
368
  end
368
369
 
369
370
  private
@@ -378,14 +379,12 @@ class EnhancedErrors
378
379
  events << :rescue if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.3.0')
379
380
 
380
381
  @trace = TracePoint.new(*events) do |tp|
382
+ next if Thread.current[:enhanced_errors_processing] || tp.raised_exception.is_a?(NoMemoryError)
383
+ Thread.current[:enhanced_errors_processing] = true
381
384
  exception = tp.raised_exception
382
385
  capture_me = EnhancedErrors.eligible_for_capture.call(exception)
383
-
384
386
  next unless capture_me
385
387
 
386
- next if Thread.current[:enhanced_errors_processing]
387
- Thread.current[:enhanced_errors_processing] = true
388
-
389
388
  exception = tp.raised_exception
390
389
  binding_context = tp.binding
391
390
 
@@ -445,7 +444,7 @@ class EnhancedErrors
445
444
  globals: globals
446
445
  },
447
446
  exception: exception.class.name,
448
- capture_type: capture_type
447
+ capture_type: capture_type.to_s
449
448
  }
450
449
 
451
450
  if on_capture_hook
@@ -461,6 +460,8 @@ class EnhancedErrors
461
460
  else
462
461
  puts "Invalid binding_info returned from on_capture, skipping."
463
462
  end
463
+ rescue => e
464
+ puts "Error in TracePoint block: #{e.message}"
464
465
  ensure
465
466
  Thread.current[:enhanced_errors_processing] = false
466
467
  end
@@ -472,7 +473,10 @@ class EnhancedErrors
472
473
  #
473
474
  # @return [String, nil] The current test name or `nil` if not in a test context.
474
475
  def test_name
475
- return RSpec&.current_example&.full_description if defined?(RSpec)
476
+ if defined?(RSpec)
477
+ return RSpec&.current_example&.full_description
478
+ end
479
+ rescue => e
476
480
  nil
477
481
  end
478
482
 
@@ -1,7 +1,7 @@
1
1
  module ErrorEnhancements
2
2
  def message
3
3
  original_message = super()
4
- "#{original_message}#{variables_message}"
4
+ "#{original_message}\n#{variables_message}"
5
5
  rescue => e
6
6
  puts "Error in message method: #{e.message}"
7
7
  original_message
@@ -29,6 +29,7 @@ module ErrorEnhancements
29
29
  # Grab the last rescue binding if we have one
30
30
 
31
31
  bindings_of_interest = []
32
+
32
33
  binding_infos.each do |info|
33
34
  if info[:capture_type] == 'raise' && !info[:library]
34
35
  bindings_of_interest << info
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: 0.1.2
4
+ version: 0.1.4
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-10-23 00:00:00.000000000 Z
11
+ date: 2024-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print