【发布时间】:2011-11-20 11:41:40
【问题描述】:
我正在使用设计,并且我希望能够在我处于开发模式时跳过确认电子邮件。由于我的应用程序在本地计算机上运行时无法发送电子邮件,因此我只会收到警告消息,提示您需要在访问应用程序之前进行确认。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 email devise
我正在使用设计,并且我希望能够在我处于开发模式时跳过确认电子邮件。由于我的应用程序在本地计算机上运行时无法发送电子邮件,因此我只会收到警告消息,提示您需要在访问应用程序之前进行确认。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 email devise
Devise 使用 ActionMailer 发送电子邮件。在测试模式下,ActionMailer 实际上不应该发送任何电子邮件。
查看this tutorial 了解有关 ActionMailer 和测试环境的说明。
因此,根据环境,您基本上可以关闭交付,同时不会影响您的实际测试。您只需在 environments/test.rb 文件中指定该选项即可。
【讨论】:
confirmed 标志吗?
在 Rails 3 中,您可以使用“拦截器”重新路由您的开发电子邮件,如 Railscast 206 中所述。
【讨论】:
Devise 还有一个方法skip_confirmation!,您可以在保存模型之前调用它以避免发送邮件。它只是设置confirmed_at 属性,从而导致跳过邮件发送。
【讨论】:
试试 Ryan Bates 的 Letter Opener gem
https://github.com/ryanb/letter_opener
它将在浏览器中打开电子邮件而不发送它。如果您正在开发中,您不希望跳过一些东西,因为有些东西会被遗漏/遗忘。
【讨论】:
或者您可以在您的开发环境中尝试MailCatcher。
【讨论】:
将您的模型用于设计。通常它的user.rb。并删除或评论配置comfirmable。 这将阻止确认过程
【讨论】:
就这么简单
user=User.new
user.email="you@email.id"
user.password="yourPassword"
user.skip_confirmation!
user.save
【讨论】:
user = User.new { |u| u.email = 'you@email.id'; u.password = 'yourPassword'; u.skip_confirmation! }.save。积木很有趣!
如果您想要一种真正轻量级的方式来执行此操作,请在注册后查看您的终端 - rails 输出显示已发送的电子邮件,您可以复制粘贴确认链接,确认帐户,然后继续测试。
粗鲁,但有效。
【讨论】:
类似于letter_opener gem(由上面的John Beynon 推荐)有一个名为mailcatcher 的gem,它适用于SMTP 级别。
基本上,您在 Rails 应用程序上配置 SMTP 以指向在本地机器上运行 mailcatcher 的端口,并且您在其他端口上有 mailcatcher 浏览器来读取电子邮件
【讨论】: