From 46047b58a9d3edf27712f9b8bd17f57cfe170ead 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 | 11 ----------- lib/rack/error_handler.rb | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+), 11 deletions(-) create mode 100644 lib/rack/error_handler.rb diff --git a/lib/rack/bad_request.rb b/lib/rack/bad_request.rb index c75d55975..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 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