From 79fb39c1e60c8d3f6860542f041d62566a8f0076 Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Fri, 15 Jan 2021 10:26:35 -0600 Subject: [PATCH] Add Set default_url_options For Entire Application as a Rails til --- README.md | 3 +- ...ault-url-options-for-entire-application.md | 30 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 rails/set-default-url-options-for-entire-application.md diff --git a/README.md b/README.md index 6f05626..ba053ca 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://tinyletter.com/jbranchaud). -_1009 TILs and counting..._ +_1010 TILs and counting..._ --- @@ -664,6 +664,7 @@ _1009 TILs and counting..._ - [Select A Select By Selector](rails/select-a-select-by-selector.md) - [Select Value For SQL Counts](rails/select-value-for-sql-counts.md) - [Serialize With fast_jsonapi In A Rails App](rails/serialize-with-fast-jsonapi-in-a-rails-app.md) +- [Set default_url_options For Entire Application](rails/set-default-url-options-for-entire-application.md) - [Set Schema Search Path](rails/set-schema-search-path.md) - [Show Pending Migrations](rails/show-pending-migrations.md) - [Show Rails Models With Pry](rails/show-rails-models-with-pry.md) diff --git a/rails/set-default-url-options-for-entire-application.md b/rails/set-default-url-options-for-entire-application.md new file mode 100644 index 0000000..469f628 --- /dev/null +++ b/rails/set-default-url-options-for-entire-application.md @@ -0,0 +1,30 @@ +# 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)