Несколько баз данных ActiveRecord 3.1.0

Я пытаюсь обновить гем ActiveRecord до последней версии 3.1.0 и вижу, что возникает множество исключений, я думаю, это связано с тем, как мы обрабатываем несколько баз данных.

Для каждой из наших баз данных мы указываем отдельный базовый класс, который наследуется от ActiveRecord :: Base , и вызываем там install_connection . Нет отношений между базами данных. До сих пор это хорошо работало для нас.

После обновления до ActiveRecord 3.1.0 я вижу, что он не работает с исключением ActiveRecord :: ConnectionNotEstablished при обходе отношений (т. Е. Успешно извлекает один объект или их набор из БД. , но не удается перейти к связанному классу).

Верхняя строка трассировки - C: /Ruby/lib/ruby/gems/1.9.1 / gems / activerecord-3.1.0 / lib / active_record / connection_adapters / abstract / connection_pool.rb: 410: в 'retrieve_connection' , поэтому я немного углубился в это. Метод определяется следующим образом:

def retrieve_connection(klass) #:nodoc:
    pool = retrieve_connection_pool(klass)
    (pool && pool.connection) or raise ConnectionNotEstablished
end

Мой простой тест ( устанавливает Customer.first.address ) вызывает retrieve_connection 3 раза. Дважды с Customer в качестве параметра klass и один раз с параметром ActiveRecord :: Base в качестве параметра - то есть, когда он терпит неудачу как install_connection не вызывается для ActiveRecord :: Base .

Тогда на актуальный вопрос - есть ли новый рекомендуемый способ обработки нескольких соединений с базой данных в ActiveRecord? Если да, то что это?

Если нет, то что может быть причиной этой проблемы?

9
задан Jon M 12 September 2011 в 15:54
поделиться