class ActionDispatch::ShowExceptions - actionpack-3.2.22 Documentation

# class ActionDispatch::ShowExceptions

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. Everytime 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.

### Constants

FAILSAFE_RESPONSE

### Public Class Methods

new(app, exceptions_app = nil) click to toggle source

    # File lib/action_dispatch/middleware/show_exceptions.rb, line 39
    def initialize(app, exceptions_app = nil)
      if [true, false].include?(exceptions_app)
        ActiveSupport::Deprecation.warn "Passing consider_all_requests_local option to ActionDispatch::ShowExceptions middleware no longer works"
        exceptions_app = nil
      end

      if exceptions_app.nil?
        raise ArgumentError, "You need to pass an exceptions_app when initializing ActionDispatch::ShowExceptions. "            "In case you want to render pages from a public path, you can use ActionDispatch::PublicExceptions.new('path/to/public')"
      end

      @app = app
      @exceptions_app = exceptions_app
    end

rescue_responses() click to toggle source

    # File lib/action_dispatch/middleware/show_exceptions.rb, line 26
    def rescue_responses
      ActiveSupport::Deprecation.warn "ActionDispatch::ShowExceptions.rescue_responses is deprecated. "            "Please configure your exceptions using a railtie or in your application config instead."
      ExceptionWrapper.rescue_responses
    end

rescue_templates() click to toggle source

    # File lib/action_dispatch/middleware/show_exceptions.rb, line 32
    def rescue_templates
      ActiveSupport::Deprecation.warn "ActionDispatch::ShowExceptions.rescue_templates is deprecated. "            "Please configure your exceptions using a railtie or in your application config instead."
      ExceptionWrapper.rescue_templates
    end

### Public Instance Methods

call(env) click to toggle source

    # File lib/action_dispatch/middleware/show_exceptions.rb, line 54
    def call(env)
      begin
        response  = @app.call(env)
      rescue Exception => exception
        raise exception if env['action_dispatch.show_exceptions'] == false
      end

      response || render_exception(env, exception)
    end