На фронте тестирования действительно хороший способ сделать это (по крайней мере, в целях разработки) - это использовать Passenger и настроить рабочую среду rails (или закомментировать «RailsEnv development» в конфигурации сайта). По крайней мере, так вы можете имитировать, как это работает в производстве.
Но для этого у меня есть множество файлов настроек, которые анализируются при запуске и выбираются в зависимости от среды. Один из параметров - показывать ли страницы ошибок (AppSettings.show_page_errors?). Тогда в моем контроллере приложений у меня есть
if !AppSettings.show_page_errors?
alias_method :rescue_action_locally, :rescue_action_in_public
end
Итак, обычно это настройки по умолчанию, но иногда мне действительно нужно посмотреть, что именно происходит, чтобы я мог отключить его на производстве.
Другим шагом является использование пользовательских страниц. В моем случае у меня есть шаблоны, основанные на ошибке, которые также включают форму для отправки в формы Google (так как мой сервер может быть поврежден). Для этого поместите это (и при необходимости измените) в свой контроллер приложений:
def render_optional_error_file(status_code)
status = interpret_status(status_code)
render :template => "/errors/#{status.to_s[0,3]}.html.haml", :status => status, :layout => 'application.html.haml' if [404, 422, 500].include?(status)
render :template => "/errors/unknown.html.haml", :status => status, :layout => 'application.html.haml' unless [404, 422, 500].include?(status)
end
Это сделает коды состояния 404, 422 и 500, используя шаблон, но в противном случае он использует неизвестный. Если вам нужно работать с другими, просто обновите этот метод и добавьте шаблон.