Установите default_url_options
для использования вашего action_mailer.default_url_options
.
В каждом из файлов вашей среды (например development.rb
, production.rb
и т. Д.) Вы можете указать, что default_url_options
использовать для action_mailer
:
config.action_mailer.default_url_options = { host: 'lvh.me', port: '3000' }
Однако они не предназначены для MyApp:Application.default_url_options
:
$ MyApp::Application.config.action_mailer.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}
$ MyApp::Application.default_url_options
#=> {}
Вот почему вы получаете эту ошибку за пределами ActionMailer
.
Вы можете настроить свои Приложения default_url_options
на использование того, что вы определили action_mailer
в соответствующем файле среды ( development.rb
, production.rb
и т. Д.).
Чтобы сделать вещи максимально сухими, сделайте это в своем config/environment.rb
файле, так что вам нужно сделать это только один раз:
# Initialize the rails application
MyApp::Application.initialize!
# Set the default host and port to be the same as Action Mailer.
MyApp::Application.default_url_options = MyApp::Application.config.action_mailer.default_url_options
Теперь, когда вы загружаете свое приложение, все ваше приложение default_url_options
будет соответствовать вашему action_mailer.default_url_options
:
$ MyApp::Application.config.action_mailer.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}
$ MyApp::Application.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}
Шляпа на @pduersteler, чтобы привести меня по этому пути.