Files
2026-10-25 23:19:29 -06:00

29 lines
783 B
Ruby

# frozen_string_literal: true
require_relative '../middleware'
require_relative '../environment'
require_relative '../http/error'
module FO::Middleware
module ErrorHandler
extend FO::Middleware
def self.dispatch(request, response, app)
app.call(request.env)
rescue FO::HTTP::Error => e
response
.status(e.status)
.template('error', {status: e.status, message: e.message, error: e})
rescue => e
warn "Uncaught exception: #{e.message}"
warn e.backtrace
message = FO::Environment.is_prod? ?
'Something went very wrong ... please try again later.' :
e.message
response
.status(500)
.template('error', {status: 500, message: message, error: e})
end
end
end