> For the complete documentation index, see [llms.txt](https://ploegert.gitbook.io/til/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ploegert.gitbook.io/til/programmy/rails/set-default-url-options-for-entire-application.md).

# 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)
