How to set config.action_controller.default_url_options = {:host = '#''} on per environment basis
Okay I figured it out the correct way to write it is
Rails.application.routes.default_url_options[:host] = 'localhost:3000'
:)
Inherit your Application's default_url_options
from ActionMailer
.
You want to keep things as DRY as possible so, ideally, you don't want to hard code your host and port in multiple places for the same environment, unless your ActionMailer
actually uses a different host and port than the rest of your Application
.
To set the default_url_options
for your entire Application
, simply add the following line to your config/environment.rb
file (changing MyApp
to your app's name):
# 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
This will fix your problem and automatically set your Application
's default_url_options
to the same as your config.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"}
You have to restart your server before the changes to this file takes effect.