reestablish previous connection after creating all databases

creating all databases mutates the connection pool.  This patch restores
the connection pool to the connection spec established before creating
all databases.  Fixes #23279
This commit is contained in:
Aaron Patterson 2016-02-23 08:12:54 -08:00
parent b2c2d32908
commit 79887593c1
2 changed files with 17 additions and 0 deletions

@ -116,7 +116,11 @@ def create(*arguments)
end
def create_all
old_pool = ActiveRecord::Base.connection_handler.retrieve_connection_pool(ActiveRecord::Base)
each_local_configuration { |configuration| create configuration }
if old_pool
ActiveRecord::Base.connection_handler.establish_connection(ActiveRecord::Base, old_pool.spec)
end
end
def create_current(environment = env)

@ -502,6 +502,19 @@ def test_pass_TEST_env_on_rake_test
assert_match '1 runs, 1 assertions', output
end
def test_rails_db_create_all_restores_db_connection
create_test_file :models, 'account'
output = Dir.chdir(app_path) { `bin/rails db:create:all db:migrate && echo ".tables" | rails dbconsole` }
assert_match "ar_internal_metadata", output, "tables should be dumped"
end
def test_rails_db_create_all_restores_db_connection_after_drop
create_test_file :models, 'account'
Dir.chdir(app_path) { `bin/rails db:create:all` } # create all to avoid warnings
output = Dir.chdir(app_path) { `bin/rails db:drop:all db:create:all db:migrate && echo ".tables" | rails dbconsole` }
assert_match "ar_internal_metadata", output, "tables should be dumped"
end
def test_rake_passes_TESTOPTS_to_minitest
create_test_file :models, 'account'
output = Dir.chdir(app_path) { `bin/rake test TESTOPTS=-v` }