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