From 5284c993ea427493623143146c93526cd1477c19 Mon Sep 17 00:00:00 2001 From: Yuhei Okazaki Date: Mon, 13 Apr 2020 10:32:32 +0900 Subject: [PATCH 1/2] Fix warning: __FILE__ in eval may not return location in binding --- lib/better_errors/raised_exception.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/better_errors/raised_exception.rb b/lib/better_errors/raised_exception.rb index f3ee36ae..bd40c279 100644 --- a/lib/better_errors/raised_exception.rb +++ b/lib/better_errors/raised_exception.rb @@ -36,8 +36,8 @@ def setup_backtrace def setup_backtrace_from_bindings @backtrace = exception.__better_errors_bindings_stack.map { |binding| - file = binding.eval "__FILE__" - line = binding.eval "__LINE__" + file = binding.source_location[0] + line = binding.source_location[1] name = binding.frame_description StackFrame.new(file, line, name, binding) } From dbe7ca004dc5f358a0e808315a860437a68e7be1 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 18 Apr 2020 11:19:16 -0400 Subject: [PATCH 2/2] Use Binding#source_location only when available --- lib/better_errors/raised_exception.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/better_errors/raised_exception.rb b/lib/better_errors/raised_exception.rb index bd40c279..02683c10 100644 --- a/lib/better_errors/raised_exception.rb +++ b/lib/better_errors/raised_exception.rb @@ -36,8 +36,13 @@ def setup_backtrace def setup_backtrace_from_bindings @backtrace = exception.__better_errors_bindings_stack.map { |binding| - file = binding.source_location[0] - line = binding.source_location[1] + if binding.respond_to?(:source_location) # Ruby >= 2.6 + file = binding.source_location[0] + line = binding.source_location[1] + else + file = binding.eval "__FILE__" + line = binding.eval "__LINE__" + end name = binding.frame_description StackFrame.new(file, line, name, binding) }