Class: ActionDispatch::ShowExceptions
Relationships & Source Files | |
Inherits: | Object |
Defined in: | actionpack/lib/action_dispatch/middleware/show_exceptions.rb |
Overview
This middleware rescues any exception returned by the application and calls an exceptions app that will wrap it in a format for the end user.
The exceptions app should be passed as parameter on initialization of ShowExceptions
. Every time there is an exception, ShowExceptions
will store the exception in env, rewrite the PATH_INFO to the exception status code and call the ::Rack
app.
If the application returns a “X-Cascade” pass response, this middleware will send an empty response as result with the correct status code. If any exception happens inside the exceptions app, this middleware catches the exceptions and returns a FAILSAFE_RESPONSE.
Constant Summary
-
FAILSAFE_RESPONSE =
# File 'actionpack/lib/action_dispatch/middleware/show_exceptions.rb', line 20[500, { "Content-Type" => "text/plain" }, ["500 Internal Server Error\n" \ "If you are the administrator of this website, then please read this web " \ "application's log file and/or the web server's log file to find out what " \ "went wrong."]]
Class Method Summary
- .new(app, exceptions_app) ⇒ ShowExceptions constructor
Instance Method Summary
Constructor Details
.new(app, exceptions_app) ⇒ ShowExceptions
# File 'actionpack/lib/action_dispatch/middleware/show_exceptions.rb', line 26
def initialize(app, exceptions_app) @app = app @exceptions_app = exceptions_app end
Instance Method Details
#call(env)
[ GitHub ]# File 'actionpack/lib/action_dispatch/middleware/show_exceptions.rb', line 31
def call(env) request = ActionDispatch::Request.new env @app.call(env) rescue Exception => exception if request.show_exceptions? render_exception(request, exception) else raise exception end end