Ruby on rails 我可以在不发送电子邮件的情况下查看邮件视图吗?

Ruby on rails 我可以在不发送电子邮件的情况下查看邮件视图吗?,ruby-on-rails,actionmailer,Ruby On Rails,Actionmailer,我认为这可能是一种常见的情况……我正在为Rails应用程序开发一个密码恢复系统,它向用户发送链接以触发新的密码表单。相当标准的东西 在我的开发服务器上,我没有在config/environments/development.rb中启用或配置任何邮件发送软件(sendmail、SMTP设置等),我有config.action\u mailer.raise\u delivery\u errors=false来抑制由于我没有启用本地邮件服务器而出现的任何错误。这一切都很好 但是,我希望在生产过程中查看

我认为这可能是一种常见的情况……我正在为Rails应用程序开发一个密码恢复系统,它向用户发送链接以触发新的密码表单。相当标准的东西

在我的开发服务器上,我没有在
config/environments/development.rb
中启用或配置任何邮件发送软件(sendmail、SMTP设置等),我有
config.action\u mailer.raise\u delivery\u errors=false
来抑制由于我没有启用本地邮件服务器而出现的任何错误。这一切都很好


但是,我希望在生产过程中查看电子邮件的内容,而不实际发送邮件。我知道可以通过测试来实现这一点,断言发送(或伪造发送)的邮件具有正确的内容。是否有任何方法可以重新路由视图或其他内容(只是暂时在生产中),以查看HTTP服务版本的电子邮件,而不是盲目地进行断言?

如果您有一个带有“密码提醒”方法的UserMailer设置,您可以调用
创建密码提醒
而不是
传递密码提醒
,它将创建消息而不实际发送。然后可以将输出发送到日志文件:

如果您有:

UserMailer.deliver_password_reminder
您可以替换为:

logger.info UserMailer.create_password_reminder.encoded
或者,如果您想将其发送到文件,也可以这样做


话虽如此,生产环境确实不是进行这类工作的地方。我从来没有必要这样做,因为我的邮件有完整的测试覆盖范围。我会考虑这个选择,但我给出了你要求的答案,因为我不知道你的全部情况。快乐编码:)

日志记录就可以了。我是Rails测试新手,并且(遗憾的是)希望看到创建的消息,这样我就可以基于它们进行测试,而不是盲目地想象通过遵循代码应该是什么样的消息。事实上,它会自动记录发送的消息,而无需调用logger(至少在Rails 2.3中是这样),所以我根本不需要更改代码——我只需要检查日志。当然,我理解。TDD有一个陡峭的学习曲线,在你能够理解如何正确地测试它之前,几乎任何新的东西都必须先做:)这听起来很熟悉,现在你提到它了!好消息是,我认为它只在开发模式中做到这一点,而不是在生产模式中。这样,您的生产日志中就不会有那么多多余的绒毛了。