errors/eval_and_internal_frames.rb
tests/_examples/errors/eval_and_internal_frames.rb in the metorex repository.
def run_snippet(code) = eval(code, binding, "(snippet)", 7)
begin
run_snippet("unknown_name")
rescue NameError => error
p(error.backtrace.first.sub(/\A.*?:/, "FILE:"))
end
begin
1.tap { raise "inside tap" }
rescue => error
p(error.backtrace.map { |line| line.sub(/\A[^:]*:/, "FILE:") })
end
class Vault
private def secret = 1
protected def guarded = 2
end
p((Vault.new.public_method(:secret) rescue $!))
p((Vault.new.public_method(:guarded) rescue $!))
p((Object.new.public_method(:exit) rescue $!))
Output:
"FILE:7:in 'Object#run_snippet'"
["FILE:10:in 'block in <main>'", "FILE:10:in 'Kernel#tap'", "FILE:10:in '<main>'"]
#<NameError: method 'secret' for class 'Vault' is private>
#<NameError: method 'guarded' for class 'Vault' is protected>
#<NameError: method 'exit' for class 'Object' is private>