2015-03-31 83 views
0

爲什麼測試環境需要爲ActionMailer設置default_url_options?Rails測試環境:爲什麼它需要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寶石,點擊電子郵件中的鏈接時,他們的工作,因爲創業板中刪除服務器名稱和端口,這樣的鏈接通常是這樣的:

/en/user/confirmation?confirmation_token=QZu3tw17uozhpEfuVWzF 

所以一次:我需要什麼指定主機是否被email_spec寶石去掉了?

+0

[準備URL]時引發異常(https://github.com/rails/rails/blob/c8bd12cf5a1dc7ebdb1594334b2598d799d4a746/actionpack/lib/action_dispatch/http/url.rb#L63) – 2015-03-31 16:56:49

回答

1

您需要它,因爲您在電子郵件中生成URL,並且ActionMailer需要:host才能知道如何正確構建URL。 email_spec稍後將其刪除的事實是無關緊要的。

+0

這只是我不知道在新創建的Rails 4.2應用程序中,不再在'test.rb'中找到這個選項,爲什麼我需要在我的應用程序中明確設置它(也是4.2,但是以4.1開頭)? – 2015-04-01 08:12:05

相關問題