How about using at_exit? It should be called even when an exception occurs, and you can write the last exception using $!
Here is an example:
at_exit { puts "Last exception: (#{$!.inspect})" puts "Backtrace: \n#{ $@ }" puts "Exiting..." } puts "my app..." raise "Exception!"
http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-at_exit
source share