aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/database_configurations/url_config.rb
diff options
context:
space:
mode:
authorEileen Uchitelle <eileencodes@gmail.com>2019-01-30 09:31:35 -0500
committerEileen Uchitelle <eileencodes@gmail.com>2019-01-30 09:31:35 -0500
commitdedcc1950613b4c756ca7fdc449d0d9315bb39aa (patch)
treeea4ad1130b658aba4a5da971ffa23b420bdfa09e /activerecord/lib/active_record/database_configurations/url_config.rb
parent9bb07b79e4bd855f24c098ba636dae15340e03ed (diff)
downloadrails-dedcc1950613b4c756ca7fdc449d0d9315bb39aa.tar.gz
rails-dedcc1950613b4c756ca7fdc449d0d9315bb39aa.tar.bz2
rails-dedcc1950613b4c756ca7fdc449d0d9315bb39aa.zip
Fix case when we want a UrlConfig but the URL is nil
Previously if the `url` key in a config hash was nil we'd ignore the configuration as invalid. This can happen when you're relying on a `DATABASE_URL` in the env and that is not set in the environment. ``` production: <<: *default url: ENV['DATABASE_URL'] ``` This PR fixes that case by checking if there is a `url` key in the config instead of checking if the `url` is not nil in the config. In addition to changing the conditional we then need to build a url hash to merge with the original hash in the `UrlConfig` object. Fixes #35091
Diffstat (limited to 'activerecord/lib/active_record/database_configurations/url_config.rb')
-rw-r--r--activerecord/lib/active_record/database_configurations/url_config.rb13
1 files changed, 9 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/database_configurations/url_config.rb b/activerecord/lib/active_record/database_configurations/url_config.rb
index 81917fc4c1..8e8aa69478 100644
--- a/activerecord/lib/active_record/database_configurations/url_config.rb
+++ b/activerecord/lib/active_record/database_configurations/url_config.rb
@@ -56,12 +56,17 @@ module ActiveRecord
end
private
- def build_config(original_config, url)
- if /^jdbc:/.match?(url)
- hash = { "url" => url }
+
+ def build_url_hash(url)
+ if url.nil? || /^jdbc:/.match?(url)
+ { "url" => url }
else
- hash = ActiveRecord::ConnectionAdapters::ConnectionSpecification::ConnectionUrlResolver.new(url).to_hash
+ ActiveRecord::ConnectionAdapters::ConnectionSpecification::ConnectionUrlResolver.new(url).to_hash
end
+ end
+
+ def build_config(original_config, url)
+ hash = build_url_hash(url)
if original_config[env_name]
original_config[env_name].merge(hash)