Man, forgetting to add my little error catching trick inside of one app I was writing made me realize how much I take such a simple trick for granted.
app = proc do |env| begin # Application code rescue Exception => e r = Rack::Response.new r.status = 500 r.header["Content-Type"] = "text/plain" r.body = e.to_s << "\n" << "-" * e.to_s.length << "\n" << e.backtrace.join("\n") r.finish end end run app
I basically write all my rack code in a way similar to that. Normally I'll probably throw in another error catching level that catches special formated ErrorPage classes for things like NoPage to generate a 404. But this here is the big absolute fallback, if at any point inside of my code I make a mistake in syntax or anything this completely catches it, and renders the full error message and a full backtrace letting me actually see the error right away instead of looking through a horrid apache log.