diff options
Diffstat (limited to 'lib/rainbows/error.rb')
-rw-r--r-- | lib/rainbows/error.rb | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/rainbows/error.rb b/lib/rainbows/error.rb new file mode 100644 index 0000000..89b1187 --- /dev/null +++ b/lib/rainbows/error.rb @@ -0,0 +1,34 @@ +# -*- encoding: binary -*- +module Rainbows + + class Error + class << self + + def app(e) + G.server.logger.error "app error: #{e.inspect}" + G.server.logger.error e.backtrace.join("\n") + rescue + end + + def listen_loop(e) + G.alive or return + G.server.logger.error "listen loop error: #{e.inspect}." + G.server.logger.error e.backtrace.join("\n") + rescue + end + + def response(e) + case e + when EOFError,Errno::ECONNRESET,Errno::EPIPE,Errno::EINVAL,Errno::EBADF + # swallow error if client shuts down one end or disconnects + when Unicorn::HttpParserError + Const::ERROR_400_RESPONSE # try to tell the client they're bad + else + app(e) + Const::ERROR_500_RESPONSE + end + end + + end + end +end |