File tree 3 files changed +49
-4
lines changed
3 files changed +49
-4
lines changed Original file line number Diff line number Diff line change
1
+ * Added a shared section to config/database.yml that will be loaded for all environments.
2
+
3
+ * Pierre Schambacher*
4
+
1
5
* Namespace error pages' CSS selectors to stop the styles from bleeding into other pages
2
- when using Turbolinks.
3
-
6
+ when using Turbolinks.
7
+
4
8
* Jan Krutisch*
5
9
6
-
10
+
7
11
8
12
Please check [ 5-1-stable] ( https://github.com/rails/rails/blob/5-1-stable/railties/CHANGELOG.md ) for previous changes.
Original file line number Diff line number Diff line change @@ -133,7 +133,14 @@ def database_configuration
133
133
config = if yaml && yaml . exist?
134
134
require "yaml"
135
135
require "erb"
136
- YAML . load ( ERB . new ( yaml . read ) . result ) || { }
136
+ loaded_yaml = YAML . load ( ERB . new ( yaml . read ) . result ) || { }
137
+ shared = loaded_yaml . delete ( "shared" )
138
+ if shared
139
+ loaded_yaml . each do |_k , values |
140
+ values . reverse_merge! ( shared )
141
+ end
142
+ end
143
+ Hash . new ( shared ) . merge ( loaded_yaml )
137
144
elsif ENV [ "DATABASE_URL" ]
138
145
# Value from ENV['DATABASE_URL'] is set to default database connection
139
146
# by Active Record.
Original file line number Diff line number Diff line change @@ -1407,6 +1407,40 @@ def index
1407
1407
assert_match "config/database" , err . message
1408
1408
end
1409
1409
1410
+ test "loads database.yml using shared keys" do
1411
+ app_file "config/database.yml" , <<-YAML
1412
+ shared:
1413
+ username: bobby
1414
+ adapter: sqlite3
1415
+
1416
+ development:
1417
+ database: 'dev_db'
1418
+ YAML
1419
+
1420
+ app "development"
1421
+
1422
+ ar_config = Rails . application . config . database_configuration
1423
+ assert_equal "sqlite3" , ar_config [ "development" ] [ "adapter" ]
1424
+ assert_equal "bobby" , ar_config [ "development" ] [ "username" ]
1425
+ assert_equal "dev_db" , ar_config [ "development" ] [ "database" ]
1426
+ end
1427
+
1428
+ test "loads database.yml using shared keys for undefined environments" do
1429
+ app_file "config/database.yml" , <<-YAML
1430
+ shared:
1431
+ username: bobby
1432
+ adapter: sqlite3
1433
+ database: 'dev_db'
1434
+ YAML
1435
+
1436
+ app "development"
1437
+
1438
+ ar_config = Rails . application . config . database_configuration
1439
+ assert_equal "sqlite3" , ar_config [ "development" ] [ "adapter" ]
1440
+ assert_equal "bobby" , ar_config [ "development" ] [ "username" ]
1441
+ assert_equal "dev_db" , ar_config [ "development" ] [ "database" ]
1442
+ end
1443
+
1410
1444
test "config.action_mailer.show_previews defaults to true in development" do
1411
1445
app "development"
1412
1446
You can’t perform that action at this time.
0 commit comments