2011-09-23 49 views
3

我有一個生產數據庫,我跟如何DB:模式:DB後遷移負載

rake db:create db:schema:load db:seed 

我還包括遷移,提供我的產品時,讓現有的設備可更新做準備。

架構之後:只加載最新遷移的版本存儲在schema_migrations中,因此當我運行db:migrate時,遷移器嘗試運行所有其他尚未存在於schema_migrations中的遷移。

有沒有一種好的方法來處理這個並不需要我來摺疊遷移的問題(因爲那是不可能的 - 就像db:migrate作爲準備步驟一樣)?

回答

2

只是不要分貝:模式:負載,通過遷移來代替:

rake db:create db:migrate db:seed 

請記住,在大/長傳球項目遷移是一個艱辛的道路。你應該努力保持你的seeds.rb更新並使用你的方式。隨着項目的演變,舊的遷移往往會失敗,因爲模型變更不兼容(就舊遷移而言)。

+0

你說得對,很難保持舊的遷移工作。隨着這個項目的年齡和規模不幸,我們沒有辦法花費時間讓這些人再次工作。這就是爲什麼在我提到的最後一句話中,db:migrate是沒有選擇的。 – CMW

+0

對不起,我沒有讓你正確。其實,在我的項目db:reset不會導致舊的遷移再次通過。那麼,我曾經有過一個非常古老的項目,從rails 2. *開始演變,我剛剛刪除了所有舊的遷移,並且沒有任何問題。 Git會跟蹤以防萬一;) – sergeych