This blog is part of our Rails 6 series. Rails 6.0 was recently released.

Rails 6 changed the return value of ActiveRecord::Base.configurations to an object of ActiveRecord::DatabaseConfigurations . Before Rails 6, ActiveRecord::Base.configurations returned a hash with all the database configurations. We can call to_h on the object of ActiveRecord::DatabaseConfigurations to get a hash.

A method named configs_for has also been added on to fetch configurations for a particular environment.

Rails 5.2

>> ActiveRecord :: Base . configurations => { "development" => { "adapter" => "sqlite3" , "pool" => 5 , "timeout" => 5000 , "database" => "db/development.sqlite3" }, "test" => { "adapter" => "sqlite3" , "pool" => 5 , "timeout" => 5000 , "database" => "db/test.sqlite3" }, "production" => { "adapter" => "sqlite3" , "pool" => 5 , "timeout" => 5000 , "database" => "db/production.sqlite3" }}

Rails 6.0.0.beta2

>> ActiveRecord :: Base . configurations => #<ActiveRecord::DatabaseConfigurations:0x00007fc18274f9f0 @configurations=[#<ActiveRecord::DatabaseConfigurations::HashConfig:0x00007fc18274f680 @env_name="development", @spec_name="primary", @config={"adapter"=>"sqlite3", "pool"=>5, "timeout"=>5000, "database"=>"db/development.sqlite3"}>, #<ActiveRecord::DatabaseConfigurations::HashConfig:0x00007fc18274f608 @env_name="test", @spec_name="primary", @config={"adapter"=>"sqlite3", "pool"=>5, "timeout"=>5000, "database"=>"db/test.sqlite3"}>, #<ActiveRecord::DatabaseConfigurations::HashConfig:0x00007fc18274f590 @env_name="production", @spec_name="primary", @config={"adapter"=>"sqlite3", "pool"=>5, "timeout"=>5000, "database"=>"db/production.sqlite3"}>]> >> ActiveRecord :: Base . configurations . to_h => { "development" => { "adapter" => "sqlite3" , "pool" => 5 , "timeout" => 5000 , "database" => "db/development.sqlite3" }, "test" => { "adapter" => "sqlite3" , "pool" => 5 , "timeout" => 5000 , "database" => "db/test.sqlite3" }, "production" => { "adapter" => "sqlite3" , "pool" => 5 , "timeout" => 5000 , "database" => "db/production.sqlite3" }} >> ActiveRecord :: Base . configurations [ 'development' ] => { "adapter" => "sqlite3" , "pool" => 5 , "timeout" => 5000 , "database" => "db/development.sqlite3" } >> ActiveRecord :: Base . configurations . configs_for ( env_name: "development" ) => [ #<ActiveRecord::DatabaseConfigurations::HashConfig:0x00007fc18274f680 @env_name="development", @spec_name="primary", @config={"adapter"=>"sqlite3", "pool"=>5, "timeout"=>5000, "database"=>"db/development.sqlite3"}>]

Here is the relevant pull request.