Compreender como o estabelecer_connection funciona no ActiveRecord

Este código foi retirado da classe gem do ActiveRecord 2.3.14ConnectionHandler

def establish_connection(name, spec)
  @connection_pools[name] = ConnectionAdapters::ConnectionPool.new(spec)
end

Parece que cada vez que o ruby chamaestablish_connection no modelo, ele está criando um novo pool de conexõe

Minha pergunta

Se eu tiver 5 modelos que usamestablish_connection para o mesmo banco de dados, o Rails é inteligente o suficiente para escolher um pool já existente, em vez de criar um novo com as mesmas credenciais de conexão? Isso também acontece se meus 5 modelos são subclasses de alguma classe abstrata que usaestablish_connection? Ele sempre escolhe uma conexão do@connection_pools se existir?

Update 1

Estou falando de um exemplo concreto. Você tem 5 modelos com 5 conexões diferentes, cada vez que o Rails usa um modelo que ele executaestablish_connection. Observando o código no ActiveRecord, quando ele executaestablish_connection ele cria um novo pool com conexões para essa conexão específica. O que estou querendo saber é se cada vez que o Rails chama umestablish_connection, ele cria um novo pool ou aceita o existente.

Exemplo: você vem ao meu site e vê uma lista de produtos. Você acabou de executar uma ação que chamaProduct.all, que executaestablish_connection para algum banco de dados na Amazon. Então, eu venho para a lista de produtos, o que acontece? Pego a conexão estabelecida ou estou criando um novo pool com essa conexão?

Update 2

Meu palpite é que, pela primeira vez, o Rails carrega meus modelos, criando pools com conexões diferentes. Depois, quando eu uso alguModel.method, apenas pega a conexão associada ao modelo e executa o métod

Não sei ao certo o que acontece quando dois modelos têm duas conexões iguais (não na classe abstrata, mas na classe própria). Isso produzirá dois mesmos conjuntos de conexões ou o ActiveRecord é inteligente o suficiente para capturar esse caso?

questionAnswers(3)

yourAnswerToTheQuestion