Merge pull request #2897 from rsutphin/ar31-remove_connection

Patch for issue #2820
This commit is contained in:
Aaron Patterson
2011-09-06 17:43:14 -07:00
parent f6ced69a11
commit 4edf6ea0ea
3 changed files with 22 additions and 3 deletions

View File

@@ -421,7 +421,7 @@ module ActiveRecord
# can be used as an argument for establish_connection, for easily
# re-establishing the connection.
def remove_connection(klass)
pool = @connection_pools[klass.name]
pool = @connection_pools.delete(klass.name)
return nil unless pool
pool.automatic_reconnect = false

View File

@@ -126,7 +126,7 @@ module ActiveRecord
end
def connection_pool
connection_handler.retrieve_connection_pool(self)
connection_handler.retrieve_connection_pool(self) or raise ConnectionNotEstablished
end
def retrieve_connection

View File

@@ -6,7 +6,12 @@ module ActiveRecord
def setup
@handler = ConnectionHandler.new
@handler.establish_connection 'america', Base.connection_pool.spec
@klass = Struct.new(:name).new('america')
@klass = Class.new do
def self.name; 'america'; end
end
@subklass = Class.new(@klass) do
def self.name; 'north america'; end
end
end
def test_retrieve_connection
@@ -28,6 +33,20 @@ module ActiveRecord
def test_retrieve_connection_pool
assert_not_nil @handler.retrieve_connection_pool(@klass)
end
def test_retrieve_connection_pool_uses_superclass_when_no_subclass_connection
assert_not_nil @handler.retrieve_connection_pool(@subklass)
end
def test_retrieve_connection_pool_uses_superclass_pool_after_subclass_establish_and_remove
@handler.establish_connection 'north america', Base.connection_pool.spec
assert_not_same @handler.retrieve_connection_pool(@klass),
@handler.retrieve_connection_pool(@subklass)
@handler.remove_connection @subklass
assert_same @handler.retrieve_connection_pool(@klass),
@handler.retrieve_connection_pool(@subklass)
end
end
end
end