2013-01-17 53 views
1

我有一個非rails應用程序的cucumber測試。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 有什麼不對?

回答

2

我想,這個要點正是你所需要的:https://gist.github.com/1109325 代碼看起來很奇怪,但它的工作原理。

+0

謝謝,它幾乎可以工作,但: 1)其實我想對不同的數據庫(聲稱在database_cleaner中支持)使用不同的清理策略。在那個腳本實際上只有最後 DatabaseCleaner.strategy =:刪除 總是勝利,我需要對不同的數據庫有不同的exext。 2)它看起來很奇怪,而且不幹。 :) – mvf

+0

據我所知,database_clearner僅支持針對不同ORM的不同策略(請參閱http://goo.gl/JWMb8),因此您唯一的選擇是fork database_cleaner並更改其行爲。 –

相關問題