ruby on rails 3.1 глобальный обработчик исключений - PullRequest
1 голос
/ 13 декабря 2011

Я разрабатываю приложение с Rails 3.1.2, но я не могу найти документацию, которая работает с ошибками / исключениями (например, 404) в этой версии rails.

Я пробовал такие вещи, как:

В контроллере приложения

rescue_from ActiveRecord::RecordNotFound,ActionController::RoutingError, 
             ActionController::UnknownController, ActionController::UnknownAction, :NoMethodError, :with => :handle_exception 

  def handle_exception 
   render :template => 'error_pages/error'
  end 

environment/development.rb

config.consider_all_requests_local = false

Где я могу найти решение?

Заранее спасибо ...

Ответы [ 2 ]

4 голосов
/ 09 января 2012

Это должно работать:

В контроллере приложения

  class NotFound < StandardError; end
  rescue_from NotFound, :with => :handle_exception

  def handle_exception 
   render :template => 'error_pages/error'
  end
1 голос
/ 14 декабря 2011

Посмотрите на action_dispatch / middleware / show_exceptions .

Из документации в источнике:

# This middleware rescues any exception returned by the application
# and wraps them in a format for the end user.

Короче говоря, он отображает ActionDispatch::ShowExceptions.render_exception, когдаОбернутое приложение (в вашем случае Rails) встречает невозвращенное исключение.

Если вы посмотрите реализацию по умолчанию, то в конечном итоге вы получите что-то вроде public/500.html, что вы видите в производственной среде.Замените метод или цепочку методов так, как считаете нужным, чтобы добавить собственную реализацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...