2011-11-24 161 views
3

我已經對我的應用進行了更改,包括添加模型和將列添加到預先存在的模型。我使用的是rails 3.1,我知道我必須在部署前預先編譯我的資產。一旦我運行git push heroku masterheroku rake db:migrate我應該預期任何錯誤?Heroku遷移數據庫更改

我試圖將宕機時間降到最低,因爲用戶在部署過程中與網站進行交互。

更新

一切似乎是罰款。推&耙DB做到了。

回答

3

您可能想要考慮的一件事是在進行更新時將應用程序置於維護模式。不用以不可預知的結果擊打用戶,您可以通過彈出維護消息來最大限度地減少混淆。您也可以自定義它。

您可以瞭解如何在這裏:http://devcenter.heroku.com/articles/maintenance-mode

+0

我甚至沒有意識到heroku有這個選項。我會在某個時候嘗試一下 – Dru

0

首先,我會在開發環境(仍然在Heroku上)測試這一點。這是確保你不會有錯誤的唯一真正方法。

其次,Heroku試圖爲你預編譯你的資產,所以通常你不需要做任何事情。也就是說,它只適用於'基本情況',你所做的任何更改通常會打破它,並且通常你的應用程序會在生產中尋找'all.css'。因此,您可能需要嘗試一下,然後逐個排查日誌中的錯誤。

第三,在用戶生活時做出更改總是會增加風險。如果你真的在乎,我會在幾個小時內完成。 ruby版本更改尤其避免了高峯時間部署。

最後一點是,如果您需要爲您的新代碼進行遷移才能正常工作,那麼您將會對活着的用戶造成中斷。我不知道有任何方法推動&遷移在一個單一的命令。在推送和遷移之間總是會有一個小的時間差,如果您提供的是實時流量,那麼將會產生帶有舊模式的新代碼,這可能會導致錯誤。

希望這會有所幫助。

+0

謝謝。您是否可以通過在heroku上的開發環境中「測試」來澄清您的意思?是否建議我創建另一個heroku項目,在那裏加載代碼(預先更改)並部署更改? – Dru

0

它是把網站處於維護模式的最佳實踐,同時部署

Heroku的維護:對

一旦你用它做,然後可以

heroku maintenance:off