Rails 4 + Exception Notifier не отправляет электронную почту в режиме разработки

Я пытаюсь протестировать Exception Notifier локально (разработка). Вот моя текущая установка:

development.rb

Myapp::Application.configure do
  # Set Mailer default url
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default_url_options = { :host => '0.0.0.0:3000' }
  #config.action_mailer.delivery_method = :file
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
       :address              => 'smtp.gmail.com',
       :port                 => 587,
       :domain               => 'gmail.com',
       :user_name            => '[email protected]',
       :password             => 'password',
       :authentication       => 'plain',
       :enable_starttls_auto => true
   }

  config.middleware.use ExceptionNotification::Rack,
    :email => {
      :email_prefix => "[Myapp Error] ",
      :sender_address => %{"notifier" <[email protected]>},
      :exception_recipients => %w{[email protected]}
    }
end

Но когда я «создаю» ошибку в приложении — например, если я устанавливаю несуществующий идентификатор, например

http://localhost:3000/users/12270/edit

Я вижу только ошибку в браузере, но электронная почта не отправляется (учетные данные электронной почты верны).

Что мне не хватает?

Чем ты


person user984621    schedule 11.10.2014    source источник


Ответы (3)


Чтобы отключить страницу ошибки в режиме разработки, вам также необходимо установить:

config.consider_all_requests_local = false
person spickermann    schedule 11.10.2014

ExceptionNotifier будет отправлять сообщения об ошибке 500. Однако ваш тест "...если я запрошу несуществующий идентификатор..." возвращает ошибку 404 не найден. Из документации:

Некоторые стоечные приложения (в частности, Rails) используют заголовок «X-Cascade», чтобы передать ответственность за обработку запросов следующему промежуточному программному обеспечению в стеке.

Промежуточное ПО маршрутизации Rails использует эту стратегию, а не инициирует исключение, для обработки ошибок маршрутизации (например, 404); чтобы получать уведомления всякий раз, когда возникает ошибка 404, установите для этого параметра значение «false».

person Pete    schedule 17.07.2015

Я обычно использую gem letter_opener для среды разработки.

Я думаю, что Exception Notifier не отправляет электронные письма в среде разработки, что понятно, поскольку вы нарушаете все виды вещей в разработке, и получение ошибок для каждого из них будет раздражать.

person Abdullah Aden    schedule 23.05.2019