как обрабатывать ошибки, такие как 404/500 в rails3 - PullRequest
7 голосов
/ 09 января 2011

Эй, надеюсь, вы мне поможете.

Я пытаюсь найти способ направить пользователя на страницы ошибок по умолчанию 404.html и 500.html в моей общей папке.

Таким образом, когда есть ошибка маршрутизации или nomethod, это должно быть направлено туда.Я уже пробовал некоторые вещи в моем контроллере приложений, но он не работал.

Большое спасибо !!

Ответы [ 3 ]

20 голосов
/ 09 января 2011

Rails делает это автоматически при работе в производственном режиме.Когда вы загружаете свое приложение на работающий сервер, Rails заботится об обработке этих исключений и отображает правильные страницы ошибок с правильным статусом заголовка.Если вы пытаетесь увидеть, как эти страницы выглядят (для тестирования или чего-то еще), просто обращайтесь к ним напрямую через http://localhost:3000/404.html

Каждый раз, когда вы устанавливаете приложение Rails на работающем сервере (давайте использовать Apache какпример), вы указываете корень сайта как папку /public в вашем приложении.Затем всякий раз, когда делается запрос на этот адрес сервера, Apache сначала просматривает эту общую папку и пытается обработать статический ресурс (это настраиваемый параметр в [environment].rb).Если он не может найти запрошенную страницу, то запрос перенаправляется через стек Ruby.

Когда в рабочем режиме Rails обнаруживает ошибку, которая не обрабатывается (т. Е. Begin, rescue), он выбрасывает ошибку до самого стека, что затем сообщает Apache (опять же, в моем примере) для отображения соответствующей ошибки.

Вот некоторые распространенные ошибки, которые вы увидите в режиме разработки, и что они отображают в рабочем режиме:

ActiveRecord::RecordNotFound => 404 (page not found)
nil.method => 500 (server error) unless you turn off whiny nils
ActionController::RoutingError => 404 (page not found)
2 голосов
/ 09 января 2011

Просмотрите этот пост , чтобы перенаправить все запросы, вызывающие ошибку маршрутизации.

2 голосов
/ 09 января 2011

Происходит автоматически при запуске в производственном режиме - нет необходимости делать это вручную.

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