Rails测试环境:为什么ActionMailer需要default_url_options?

时间:2015-03-31 16:06:54

标签: ruby-on-rails rspec email-spec

为什么测试环境需要为ActionMailer设置default_url_options?

如果我没有设置它,我在执行我的规范时会得到这个:

 ActionView::Template::Error:
   Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true

我特别想知道因为设置时

config.action_mailer.default_url_options = {host: 'localhost:3000'}

那么理论上电子邮件中的链接会导致localhost:3000,据我所知,这不是测试服务器实例真正运行的地方?仍然,当使用email_spec gem并点击电子邮件中的链接时,它们可以工作,因为gem删除了服务器名称和端口,因此链接通常如下所示:

/en/user/confirmation?confirmation_token=QZu3tw17uozhpEfuVWzF

再一次:如果email_spec gem删除了主机,我还需要指定主机?

1 个答案:

答案 0 :(得分:1)

您需要它,因为您在电子邮件中生成URL,而ActionMailer需要:host知道如何正确构建URL。 email_spec稍后删除它的事实是无关紧要的。