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)