Rails test env: зачем он нужен default_url_options для ActionMailer?
Почему в тестовой среде необходимо установить default_url_options для ActionMailer?
Если я не установлю это, я получаю это при выполнении моих спецификаций:
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
драгоценный камень в любом случае?
1 ответ
Вам это нужно, потому что вы генерируете URL-адреса в своей электронной почте, а ActionMailer нужен :host
знать, как правильно построить URL. Тот факт, что email_spec удаляет его позже, не имеет значения.