2013-03-04 59 views
0

我有一個腳本將在包含Rails應用程序的虛擬實例的引導時運行。這是用於設置測試環境的自動化系統的一部分,所以我希望它能夠正確初始化,無論這是否是此環境中首次啓動該應用程序。也就是說,第一次環境將此應用程序,它應該運行的標準:我可以選擇性地運行db:schema:load?

rake db:create 
rake db:schema:load 
rake db:fixtures:load 

但是,任何時候數據庫已經創建後,它應該忽略這些命令。到目前爲止,足夠聰明的知道db:create可以被跳過,但它不斷重新運行其他的。

是否有一種簡單的方法來處理這個問題,除了直接調用數據庫並對其採取行動?

回答

0

也許務實的解決辦法是忽略數據庫錯誤:創建(如果該數據庫存在,它會拋出一個異常)

所以,你可以創建一個rake任務像

task :my_task => :environment do 
    begin 
    Rake::Task["db:create"].invoke 
    Rake::Task["db:schema:load"].invoke 
    Rake::Task["db:fixtures:load"].invoke 
    rescue Exception => e 
    end 

    #more stuff... 
end 
相關問題