Установите 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 для того, чтобы вести меня по этому пути.