From d6f3ad7ce7066b8815b4bda4a1e843b2c72c2ad3 Mon Sep 17 00:00:00 2001
From: Arthur Neves <arthurnn@gmail.com>
Date: Tue, 10 May 2016 23:00:33 -0400
Subject: Make sure we reset the connection_specification_name on
 remove_connection

When calling `remove_connection` on a model, we delete the pool so we also
need to reset the `connection_specification_name` so it will fallback to
the parent.
This was the current behavior before rails 5, which will fallback to the
parent connection pool.

[fixes #24959]

Special thanks to @jrafanie for working with me on this fix.
---
 .../cases/connection_adapters/connection_handler_test.rb   | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

(limited to 'activerecord/test/cases')

diff --git a/activerecord/test/cases/connection_adapters/connection_handler_test.rb b/activerecord/test/cases/connection_adapters/connection_handler_test.rb
index fc5ca8865b..62beb8bea4 100644
--- a/activerecord/test/cases/connection_adapters/connection_handler_test.rb
+++ b/activerecord/test/cases/connection_adapters/connection_handler_test.rb
@@ -89,6 +89,20 @@ module ActiveRecord
           assert_equal @pool.schema_cache.size, Marshal.load(rd.read)
           rd.close
         end
+
+        def test_a_class_using_custom_pool_and_switching_back_to_primary
+          klass2     = Class.new(Base)   { def self.name; 'klass2'; end }
+
+          assert_equal klass2.connection.object_id, ActiveRecord::Base.connection.object_id
+
+          pool = klass2.establish_connection(ActiveRecord::Base.connection_pool.spec.config)
+          assert_equal klass2.connection.object_id, pool.connection.object_id
+          refute_equal klass2.connection.object_id, ActiveRecord::Base.connection.object_id
+
+          klass2.remove_connection
+
+          assert_equal klass2.connection.object_id, ActiveRecord::Base.connection.object_id
+        end
       end
     end
   end
-- 
cgit v1.2.3