Ruby "better" unhandled exception output

Inspired by some blog post, unroller, Tracer, and Python, I bring you.


why: the default unhandled exception screen output is somewhat sparse:

ruby crash.rb
crash.rb:6:in go2': unhandled exception from crash.rb:11:in go’
from crash.rb:15

The new backtracer, however:

ruby -rbacktracer crash.rb

unhandled exception: crash.rb:6: raise
locals: {“a”=>“3”, “b”=>3, “within_go2”=>4}
crash.rb:1 go2(a=>3, b=>55)
locals: {“a”=>“3”, “b”=>3, “within_go2”=>4}
crash.rb:8 go(a=>3)
locals: {“a”=>“3”, “within_go”=>2}

How to use:

copy backtracer.rb to pwd from
gem install ruby-debug # if you don’t have it installed

then run as ruby -rbacktracer script_name

Sorry it’s not a gem yet, should be by next week.
Feedback welcome.