У нас есть драгоценный камень, который представляет собой коллекцию моделей ActiveRecord, которые подключаются к нашей прежней системе. В нашем случае у нас есть все те модели, которые содержатся в модуле, из которого соединяются все модели, связанные с устаревшей базой данных.
module Legacy
class Base < ActiveRecord::Base
establish_connection :legacy
end
class User < Base
end
end
При такой настройке очень легко отключить соединение с базой данных. Если вы действительно хотите использовать это автоматическое обнаружение, вы можете поместить логику в базовый класс, чтобы определить, какую базу данных использовать:
module Legacy
class Base < ActiveRecord::Base
if Rails.env == 'test'
establish_connection :legacy_test
else
establish_connection :legacy
end
end
Или просто скажите вашему модулю, какое соединение использовать в вашем помощнике спецификаций:
# spec/spec_helper.rb
Legacy::Base.establish_connection(ActiveRecord::Base.configurations['legacy_test'])
Лично я бы порекомендовал второй вариант. Конечно, оба решения зависят от моделей пространства имен.
Peer