Rails 4 + 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 => 'username@gmail.com',
:password => 'password',
:authentication => 'plain',
:enable_starttls_auto => true
}
config.middleware.use ExceptionNotification::Rack,
:email => {
:email_prefix => "[Myapp Error] ",
:sender_address => %{"notifier" <no-reply@myapp.com>},
:exception_recipients => %w{myemail@gmail.com}
}
end
Но когда я "создаю" ошибку в приложении - например, если я установил несуществующий идентификатор, например,
http://localhost:3000/users/12270/edit
Я вижу только ошибку в браузере, но электронная почта не отправляется (учетные данные электронной почты верны).
Что мне не хватает?
Чем ты
2 ответа
Чтобы отключить страницу ошибки в режиме разработки, необходимо также установить:
config.consider_all_requests_local = false
ExceptionNotifier будет отправлять сообщения об ошибке 500. Тем не менее, ваш тест "... если я запрашиваю несуществующий идентификатор..." возвращает 404 не найден. Из документов:
Некоторые стоечные приложения (в частности Rails) используют заголовок "X-Cascade" для передачи ответственности за обработку запросов следующему промежуточному программному обеспечению в стеке.
Промежуточное программное обеспечение маршрутизации Rails использует эту стратегию, а не вызывает исключение, для обработки ошибок маршрутизации (например, 404); чтобы получать уведомления всякий раз, когда происходит 404, установите эту опцию на "ложь".
Я обычно пользуюсь gem letter_opener
для среды разработки.
Я думаю, что Exception Notifier не отправляет электронные письма в среде разработки, что понятно, так как вы ломаете все виды вещей в процессе разработки и получаете ошибки для каждого, что будет раздражать.