/usr/lib/ruby/vendor_ruby/web_console/integration/cruby.rb is in ruby-web-console 2.2.1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | class Exception
begin
# We share the same exception binding extraction mechanism as better_errors,
# so try to use it if it is already available. It also solves problems like
# charliesome/better_errors#272, caused by an infinite recursion.
require 'better_errors'
# The bindings in which the exception originated in.
def bindings
@bindings || __better_errors_bindings_stack
end
rescue LoadError
# The bindings in which the exception originated in.
def bindings
@bindings || []
end
# CRuby calls #set_backtrace every time it raises an exception. Overriding
# it to assign the #bindings.
def set_backtrace_with_binding_of_caller(*args)
# Thanks to @charliesome who wrote this bit for better_errors.
unless Thread.current[:__web_console_exception_lock]
Thread.current[:__web_console_exception_lock] = true
begin
# Raising an exception here will cause all of the rubies to go into a
# stack overflow. Some rubies may even segfault. See
# https://bugs.ruby-lang.org/issues/10164 for details.
@bindings = binding.callers.drop(1)
ensure
Thread.current[:__web_console_exception_lock] = false
end
end
set_backtrace_without_binding_of_caller(*args)
end
alias_method :set_backtrace_without_binding_of_caller, :set_backtrace
alias_method :set_backtrace, :set_backtrace_with_binding_of_caller
end
end
|