aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreileencodes <eileencodes@gmail.com>2019-03-18 16:23:00 -0400
committereileencodes <eileencodes@gmail.com>2019-03-18 16:23:00 -0400
commit8f3066fccc3b80fa3bfaa2830858f61f046bd61a (patch)
treeb740af3ae555762eb2e4627f00f256240e27a0ba
parent98d0f93506b0b97804d0d510ffcc435af9b2a2d5 (diff)
downloadrails-8f3066fccc3b80fa3bfaa2830858f61f046bd61a.tar.gz
rails-8f3066fccc3b80fa3bfaa2830858f61f046bd61a.tar.bz2
rails-8f3066fccc3b80fa3bfaa2830858f61f046bd61a.zip
Fix database configuration when adding another config level
This is kind of hard to explain but if you have a database config with another level like this: ``` development: primary: database: "my db" variables: statement_timeout: 1000 ``` the database configurations code would chooke on the `variables` level because it didn't know what to do with it. We'd see the following error: ``` lib/active_record/database_configurations.rb:72:in `block in find_db_config': undefined method `env_name' for [nil]:Array (NoMethodError) ``` The problem here is that Rails does correctly identify this as not a real configuration but returns `[nil]` along with the others. We need to make sure to flatten the array and remove all the `nil`'s before returning the `configurations` objects. Fixes #35646
-rw-r--r--activerecord/lib/active_record/database_configurations.rb2
-rw-r--r--railties/test/isolation/abstract_unit.rb2
2 files changed, 3 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/database_configurations.rb b/activerecord/lib/active_record/database_configurations.rb
index a6c702cbbc..4656045fe5 100644
--- a/activerecord/lib/active_record/database_configurations.rb
+++ b/activerecord/lib/active_record/database_configurations.rb
@@ -106,7 +106,7 @@ module ActiveRecord
build_db_config = configs.each_pair.flat_map do |env_name, config|
walk_configs(env_name.to_s, "primary", config)
- end.compact
+ end.flatten.compact
if url = ENV["DATABASE_URL"]
build_url_config(url, build_db_config)
diff --git a/railties/test/isolation/abstract_unit.rb b/railties/test/isolation/abstract_unit.rb
index 14cdf1ab7c..3fcfaa9623 100644
--- a/railties/test/isolation/abstract_unit.rb
+++ b/railties/test/isolation/abstract_unit.rb
@@ -123,6 +123,8 @@ module TestHelpers
adapter: sqlite3
pool: 5
timeout: 5000
+ variables:
+ statement_timeout: 1000
development:
primary:
<<: *default