Я пытаюсь обновить гем 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? Если да, то что это?
Если нет, то что может быть причиной этой проблемы?