1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-02 22:58:01 +00:00
Files
til/rails/set-default-url-options-for-entire-application.md

31 lines
1.2 KiB
Markdown

# Set default_url_options For Entire Application
There are a [number of
ways](https://github.com/rails/rails/issues/29992#issuecomment-575464112) 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:
```ruby
# 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.
[source](https://discuss.rubyonrails.org/t/define-host-so-absolute-urls-work-in-development-and-test/75085/10)