提交 ffb218c7 编写于 作者: A Aaron Patterson

pools are 1:1 with spec now rather than 1:1 with class

上级 2a9a8ad4
......@@ -320,10 +320,12 @@ class ConnectionHandler
def initialize(pools = {})
@connection_pools = pools
@class_to_pool = {}
end
def establish_connection(name, spec)
@connection_pools[name] = ConnectionAdapters::ConnectionPool.new(spec)
@connection_pools[spec] ||= ConnectionAdapters::ConnectionPool.new(spec)
@class_to_pool[name] = @connection_pools[spec]
end
# Returns true if there are any active connections among the connection
......@@ -374,16 +376,17 @@ def connected?(klass)
# can be used as an argument for establish_connection, for easily
# re-establishing the connection.
def remove_connection(klass)
pool = @connection_pools.delete(klass.name)
pool = @class_to_pool.delete(klass.name)
return nil unless pool
@connection_pools.delete pool.spec
pool.automatic_reconnect = false
pool.disconnect!
pool.spec.config
end
def retrieve_connection_pool(klass)
pool = @connection_pools[klass.name]
pool = @class_to_pool[klass.name]
return pool if pool
return nil if ActiveRecord::Base == klass
retrieve_connection_pool klass.superclass
......
......@@ -82,7 +82,8 @@ def self.resolve_string_connection(spec) # :nodoc:
def self.resolve_hash_connection(spec) # :nodoc:
spec = spec.symbolize_keys
unless spec.key?(:adapter) then raise AdapterNotSpecified, "database configuration does not specify adapter" end
raise(AdapterNotSpecified, "database configuration does not specify adapter") unless spec.key?(:adapter)
begin
require "active_record/connection_adapters/#{spec[:adapter]}_adapter"
......
......@@ -40,8 +40,6 @@ def test_retrieve_connection_pool_uses_superclass_when_no_subclass_connection
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),
......
......@@ -85,7 +85,6 @@ def test_transactions_across_databases
end
def test_arel_table_engines
assert_not_equal Entrant.arel_engine, Course.arel_engine
assert_equal Entrant.arel_engine, Bird.arel_engine
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册