From 1edc104d324f761b74e8ae43b95bba31fbee3f0f Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Thu, 12 Jan 2023 20:40:44 +1300 Subject: [PATCH] Prefer `Rack::ErrorHandler` middleware. --- lib/rack/bad_request.rb | 15 ++------------- lib/rack/error_handler.rb | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 lib/rack/error_handler.rb diff --git a/lib/rack/bad_request.rb b/lib/rack/bad_request.rb index 00fdcc376..300811a3c 100644 --- a/lib/rack/bad_request.rb +++ b/lib/rack/bad_request.rb @@ -1,15 +1,4 @@ module Rack - module BadRequest - class Middleware - def initialize(app) - @app = app - end - - def call(env) - @app.call(env) - rescue BadRequest => error - [400, {}, ["Bad Request: #{error.message}"]] - end - end - end + module BadRequest + end end diff --git a/lib/rack/error_handler.rb b/lib/rack/error_handler.rb new file mode 100644 index 000000000..d332d8f5e --- /dev/null +++ b/lib/rack/error_handler.rb @@ -0,0 +1,23 @@ +module Rack + class ErrorHandler + def initialize(app) + @app = app + end + + def bad_request(error) + [400, {}, ["Bad Request: #{error.message}"]] + end + + def internal_server_error(error) + [500, {}, ["Internal Server Error: #{error.message}"]] + end + + def call(env) + @app.call(env) + rescue BadRequest => error + return bad_request(error) + rescue => error + return internal_server_error(error) + end + end +end