Skip to content

Instantly share code, notes, and snippets.

Created December 14, 2012 16:05
Show Gist options
  • Save anonymous/4286519 to your computer and use it in GitHub Desktop.
Save anonymous/4286519 to your computer and use it in GitHub Desktop.
Better errors for non-webapps
# https://github.com/charliesome/better_errors/issues/55
require 'better_errors'
module BetterWrapper
def self.wrap(&blk)
yield
rescue => e
require 'rack'
BetterErrors.application_root = File.expand_path("..", __FILE__)
print_error e
server.run builder_for(e), :Port => 9292
end
def self.print_error(e)
puts "#{e.class}: #{e.message}"
puts " " + e.backtrace.join("\n ")
end
def self.server
server = Rack::Handler::WEBrick
trap('INT') { server.shutdown }
server
end
def self.builder_for(e)
Rack::Builder.new do
run BetterErrors::Middleware.new(Proc.new { |env| raise e })
end
end
end
# ------------
BetterWrapper.wrap do
# do stuff here
raise "Did it work?"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment