Я создал обработчик ошибок, который при возникновении ошибки в любом из методов контроллера в рабочей среде перенаправляет пользователя на страницу ошибок и отправляет мне, разработчику, электронное письмо с уведомлением.Это работает, но я хочу, чтобы во время разработки появлялся обычный экран ошибок.Я предполагал, что код для создания этого был просто raise e
, но вместо этого в процессе разработки я теперь получаю страницу ошибки по умолчанию production (ту, которая говорит: «Извините, но что-то пошло не так».), вместо подробного сообщения об ошибке и трассировки, которые раньше отображались.
class ApplicationController < ActionController::Base
rescue_from StandardError, with: :handle_error
#error handler
def handle_error(e)
if Rails.env.production?
#code to send email and redirect to error page
else
raise e
end
end
end
Я также попытался сделать следующее:
raise
raise StandardError.new e
raise e, e.message
raise e.message
, и если я запусту любой из них в binding.pry
console, они выдают сообщение об ошибке, которое я ищу, но на странице ошибки все еще просто написано «Извините, но что-то пошло не так».
Кто-нибудь знает, как я могу просто показатьстраница ошибки разработки по умолчанию?
ОБНОВЛЕНИЕ
Это безумие ... поэтому код для отображения ошибки обычно должен определенно работать, но что-тогде-то это мешает.Если я изменяю config.consider_all_requests_local = true
на производстве, ошибки появляются на производстве, но даже если я скопирую и вставлю свой файл config / environment / production.rb в мой config / environment / development.rb, ошибки все равно не отобразятсяна развитие.Если я вхожу в консоль pry, request.local?
возвращает «0», что означает «истина», а Rails.env
возвращает «развитие».Я понятия не имею, что происходит.
ОБНОВЛЕНИЕ 2
Очевидно, я не должен спасать исключения при разработке, но даже если я удаляю каждый битПользовательский код обработки ошибок, поэтому мой Application Controller просто пуст, мои ошибки по-прежнему не отображаются при разработке.Кроме того, у меня есть другое приложение с тем же самым точным кодом обработки ошибок, и для этого ошибки показывают.