database_cleaner без database.yml и нескольких баз данных
У меня есть тесты на огурцы без применения рельсов.
У меня нет файла database.yml в моем проекте, и по некоторым причинам он не нужен (настройки соединения хранятся в несколько ином формате).
У меня есть несколько моделей баз данных, определенных как
class MyBase < ActiveRecord::Base
self.abstract_class = true
def self.some_extra_methods
end
end
class DatabaseA < MyBase
self.abstract_class = true
establish_connection ($configA)
end
class DatabaseB < MyBase
self.abstract_class = true
establish_connection ($configB)
end
# if i will not connect ActiveRecord::Base to something i get ActiveRecord::ConnectionNotEstablished errors
# is there a better solution?
ActiveRecord::Base.establish_connection $configC;
class TableA < DatabaseA
self.table_name = :table_a
self.primary_key = :id
end
#... and other tables
class TableB < DatabaseB
self.table_name = :table_b
self.primary_key = :id
end
#... and other tables
Теперь, чтобы очистить эти базы данных, я пытаюсь использовать следующий код. У меня нет database.yml, поэтому я просто прохожу модели.
DatabaseCleaner[:active_record, {:model => DatabaseA} ].strategy = :truncation
DatabaseCleaner[:active_record, {:model => DatabaseB} ].strategy = :truncation
Before do
DatabaseCleaner.start
end
After do
DatabaseCleaner.clean
end
Но он очищает только базу данных, подключенную ActiveRecord::Base, а не DatabaseA и DatabaseB Что не так?
1 ответ
Решение
Я думаю, что это именно то, что вам нужно: https://gist.github.com/1109325 Код выглядит странно, но работает.