アプリケーションのメーラーで名前付きルートを使用すると、次のエラーが発生します。
ArgumentError: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
これは常に発生しているわけではなく、開発モードでも本番モードでもローカルで再現できません。
本番環境でコンソールを開くと、デフォルトのホストが構成されていることを確認できます。
ActionMailer::Base.default_url_options
=> {:host=>"thehost.com"}
Rails.application.config.action_mailer.default_url_options
=> {:host=>"thehost.com"}
Spree::Core::Engine.config.action_mailer.default_url_options
=> {:host=>"thehost.com"}
すべての名前付きルートは、Spree のルーティング プロキシを介して呼び出されます。
<%= spree.my_route_url %>
config/environments/production.rb に以下があります
config.action_mailer.default_url_options = { :host => "thehost.com" }
Spree も :site_url 設定 (私は正しく設定しました) から設定するため、これは冗長である可能性があります。
ActionMailer::Base.default_url_options[:host] = Spree::Config[:site_url]
(mail_settings.rbより)
Spree はバージョン 1-0-stable Rails 3.1.3 Ruby 1.9.3 です。