2012-03-07 60 views
1

我正在嘗試爲我的應用創建遷移,並且在此應用中,我使用試圖在應用啓動時啓動不同服務的gem。顯然,創建一個遷移...如何判斷Rails應用何時被遷移激活?

rails generate migration AddSomeStuffToTable stuff:string 

...激活應用程序,這種寶石,其試圖連接到啓動該服務。看起來,通過生成遷移來啓動應用程序會導致服務啓動無法連接,因此它只會保持休眠狀態並再次嘗試,而不會實際運行遷移。

在這種寶石,我已經處理了這個進行耙,所以這是我到目前爲止有:

MyService.start unless defined? Rake or defined? IRB 

此處理耙問題(如耙分貝:遷移,耙分貝:填充),但是我如何處理遷移的創建(據我所知)不是Rake任務?

+0

你考慮手動創建遷移文件?或者這純粹是好奇心? :) – 2012-03-07 21:25:44

+0

那麼這將是一個替代方案,但我真的覺得我應該能夠使用rails generator。 – 2012-03-07 21:41:17

回答

0

你可以嘗試使用環境變量禁用該服務:

MyService.start unless ENV['NO_SERVICE'] 

而像這樣運行命令:

NO_SERVICE=1 rails generate migration AddSomeStuffToTable stuff:string 

不過,我懷疑這很好地進行擴展,特別是如果多個開發人員在應用程序。更好的方法可能是做相反的事情,只在特定的env變量存在時纔開始服務。然而,去這個方向,你需要讓設置此變量確保您的應用服務器,例如:

阿帕奇:SetEnv START_SERVICE 1

nginx的:env START_SERVICE=1

薄:START_SERVICE=1 thin start

+0

相反的做法絕對似乎是這個項目要走的路。謝謝您的幫助! – 2012-03-14 16:56:14