0

为什么测试环境需要为 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_specgem 并单击电子邮件中的链接时,它们仍然有效,因为 gem 删除了服务器名称和端口,因此链接通常如下所示:

/en/user/confirmation?confirmation_token=QZu3tw17uozhpEfuVWzF

所以再来一次:如果它被email_specgem 删除了,我需要为它指定什么主机?

4

1 回答 1

1

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

于 2015-03-31T16:46:18.790 回答