Могу ли я взглянуть на просмотры Mailer, не отправляя электронное письмо? - PullRequest
4 голосов
/ 30 января 2010

Я думаю, что это может быть распространенной ситуацией ... Я работаю над системой восстановления пароля для приложения Rails, которое отправляет ссылку пользователю, чтобы вызвать форму нового пароля. Довольно стандартные вещи.

На моем сервере разработки у меня нет включенного или настроенного программного обеспечения для отправки почты (sendmail, настройки SMTP и т. Д.). В config/environments/development.rb у меня есть config.action_mailer.raise_delivery_errors = false для подавления любых ошибок, которые возникают, поскольку у меня нет локальный почтовый сервер включен. Это все хорошо и хорошо.

Тем не менее, я хотел бы просматривать содержимое электронных писем в процессе работы без фактической отправки почты. Я знаю, что это можно сделать с помощью тестирования, утверждая, что отправленное (или поддельное) письмо имеет правильный контент. Есть ли способ перенаправить представления или что-то, только временно в производстве, чтобы просмотреть версию электронной почты, обслуживаемую по протоколу HTTP, вместо слепого утверждения?

1 Ответ

1 голос
/ 30 января 2010

Если у вас есть настройка UserMailer с методом «password_reminder», вы можете вызвать create_password_reminder вместо deliver_password_reminder, и он создаст сообщение без фактической отправки. Затем вы можете отправить вывод в файл журнала:

Где бы вы имели:

UserMailer.deliver_password_reminder

Вы можете заменить на:

logger.info UserMailer.create_password_reminder.encoded

Или, если вы хотите отправить его в файл, вы также можете сделать это.

При этом производственная среда действительно не подходит для подобных вещей. У меня никогда не было необходимости делать это, потому что мои почтовые программы имеют полное тестовое покрытие. Вместо этого я бы посмотрел на этот вариант, но я дал ответ, который вы просили, потому что я не знаю вашу полную ситуацию. Удачного кодирования:)

...