Module | ActionController::Rescue
In: | lib/action_controller/rescue.rb

Actions that fail to perform as expected throw exceptions. These exceptions can either be rescued for the public view (with a nice user-friendly explanation) or for the developers view (with tons of debugging information). The developers view is already implemented by the Action Controller, but the public view should be tailored to your specific application.

The default behavior for public exceptions is to render a static html file with the name of the error code thrown. If no such file exists, an empty response is sent with the correct status code.

You can override what constitutes a local request by overriding the `local_request?` method in your own controller. Custom rescue behavior is achieved by overriding the `rescue_action_in_public` and `rescue_action_locally` methods.

### Methods

local_request? log_error render_optional_error_file rescue_action rescue_action_in_public rescue_action_locally rescue_action_without_handler

### Classes and Modules

Module ActionController::Rescue::ClassMethods

### Constants

LOCALHOST | = | ['127.0.0.1', '::1'].freeze
DEFAULT_RESCUE_RESPONSE | = | :internal_server_error

DEFAULT_RESCUE_RESPONSES

=

{ 'ActionController::RoutingError' => :not_found, 'ActionController::UnknownAction' => :not_found, 'ActiveRecord::RecordNotFound' => :not_found, 'ActiveRecord::StaleObjectError' => :conflict, 'ActiveRecord::RecordInvalid' => :unprocessable_entity, 'ActiveRecord::RecordNotSaved' => :unprocessable_entity, 'ActionController::MethodNotAllowed' => :method_not_allowed, 'ActionController::NotImplemented' => :not_implemented, 'ActionController::InvalidAuthenticityToken' => :unprocessable_entity

DEFAULT_RESCUE_TEMPLATE | = | 'diagnostics'
DEFAULT_RESCUE_TEMPLATES | = | { 'ActionView::MissingTemplate' => 'missing_template', 'ActionController::RoutingError' => 'routing_error', 'ActionController::UnknownAction' => 'unknown_action', 'ActionView::TemplateError' => 'template_error'
RESCUES_TEMPLATE_PATH | = | ActionView::Template::EagerPath.new_and_loaded( File.join(File.dirname(__FILE__), "templates"))

### Protected Instance methods

local_request?(

True if the request came from localhost, 127.0.0.1. Override this method if you wish to redefine the meaning of a local request to include remote IP addresses or other criteria.

log_error(exception)

Overwrite to implement custom logging of errors. By default logs as fatal.

render_optional_error_file(status_code)

Attempts to render a static error page based on the `status_code` thrown, or just return headers if no such file exists. At first, it will try to render a localized static page. For example, if a 500 error is being handled Rails and locale is :da, it will first attempt to render the file at `public/500.da.html` then attempt to render `public/500.html`. If none of them exist, the body of the response will be left empty.

rescue_action(exception)

Exception handler called when the performance of an action raises an exception.

rescue_action_in_public(exception)

Overwrite to implement public exception handling (for requests answering false to `local_request?`). By default will call render_optional_error_file. Override this method to provide more user friendly error messages.

rescue_action_locally(exception)

Render detailed diagnostics for unhandled exceptions rescued from a controller action.

rescue_action_without_handler(exception)

[Validate]