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 Код выглядит странно, но работает.

Другие вопросы по тегам