2010-04-15 63 views
16

將開發數據庫中的數據複製到測試數據中是否有任何微不足道的方法?我知道這是一種複製模式並重新創建數據庫的方法,但是有沒有任何使用開發工具填充測試數據庫的rake任務?Rails - 使用開發數據填充測試數據庫

回答

16

您可以MySQL的直接使用:

mysqldump app_development | mysql app_test 
+0

如果你沒有使用mysql,@ j0k到目前爲止已經得到了最好的答案:rake db:test:clone && rake db:seed RAILS_ENV ='test' – Krut 2012-12-05 08:48:01

12

您可以使用:

rake db:test:clone 

要開發數據庫複製到測試。

+13

根本不適用於我。結構已創建,但沒有記錄被複制。該任務是否需要複製數據?描述並不直接指出。 – mdrozdziel 2010-04-15 12:56:20

+1

它沒有爲我工作。測試數據庫似乎是空的... – 2011-06-15 19:44:48

+9

db:test:clone是db:schema:dump和db:test:prepare的組合,並且實際上並不複製* data * – JohnMetta 2012-07-23 17:35:03

4

如果你只是想克隆的發展DB的全部,這有什麼錯只是複製development.sqlite3和重命名test.sqlite3?您可以通過設置可從命令行運行的批處理文件(或您的操作系統上的等效文件)來自動執行此過程。

這將在本地工作,但我只是意識到你可能會想到一個非本地環境,在這種情況下,它可能不會。

3

的另一種方法,如果你使用的種子(DB/seeds.rb)

首先,添加rake任務,例如以LIB /任務/ test_seed.rake與此代碼:

namespace :db do 
    namespace :test do 
    task :prepare => :environment do 
     Rake::Task["db:seed"].invoke 
    end 
    end 
end 

然後當你通過遷移和種子改變了你的數據庫結構/內容,您可以運行

rake:db:test:prepare 

要複製的模式和種子數據。

所以完整的步驟將是:

rake db:migrate 
rake db:seed 
rake db:test:prepare 
+0

如果你在rake db:seed之後運行'rake db:test:prepare' '它會刪除你的種子數據=] – professormeowingtons 2013-07-02 20:43:52

5

對於所有的數據庫:

rake db:test:clone && rake db:seed RAILS_ENV='test' 
+0

ops,我以爲你想用seed.rb文件填充測試數據庫。 – drr 2012-01-04 13:20:33

+2

更新此爲他想要的? – dove 2012-10-26 07:32:52

3

在Postgres,複製數據庫,像這樣:

創建模板originaldb DATABASE NEWDB OWNER dbuser;

相關問題