1.2 KiB
Set default_url_options For Entire Application
There are a number of
ways to
set default_url_options for the various modules that need them. While the
development server can infer URL options for the most part, it needs them
explicitly defined for ActionMailer. You may also see the ArgumentError: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true error when using a URL
helper. That's because the routes config also needs to know.
Instead of cobbling together default settings in several different places as the issues arise, you can define them application-wide like so:
# config/environments/development.rb
Rails.application.default_url_options = { host: 'localhost', port: 3000 }
Rails.application.configure do
# ...
end
Add the default_url_options to Rails.application just outside of the
standard configure block in each of your environment config files. Now
everything should know how to generate full URLs.
Note: I've tested this out in a Rails 6.1 application.