Class: ActionDispatch::ShowExceptions
- Inherits:
-
Object
- Object
- ActionDispatch::ShowExceptions
- Defined in:
- 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.
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, exceptions_app) ⇒ ShowExceptions
constructor
A new instance of ShowExceptions.
Constructor Details
#initialize(app, exceptions_app) ⇒ ShowExceptions
Returns a new instance of ShowExceptions.
19 20 21 22 |
# File 'lib/action_dispatch/middleware/show_exceptions.rb', line 19 def initialize(app, exceptions_app) @app = app @exceptions_app = exceptions_app end |
Instance Method Details
#call(env) ⇒ Object
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/action_dispatch/middleware/show_exceptions.rb', line 24 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 |