2014-05-23 51 views
5

最近我有一個問題,我的數據庫計劃更改沒有反映在Heroku PG上。我仔細檢查,看到移民和種子都成功了。更奇怪的是,數據庫方案的改變在分階段heroku部署(在完全相同的遷移/種子之後)上工作得很好。一些周圍搜索後,我才知道,你應該通過遷移後重新啓動的Heroku:每次遷移後您需要重新啓動Heroku嗎?

heroku restart --app=app_name 

我從來沒有做到這一點(我不完全是一個退伍軍人,但我已經運行良好的金額之前的遷移,並且從未因此特殊原因而不得不重新啓動heroku)。

實際上我需要在每次遷移後重新啓動heroku嗎?或者這是更多的情況下的事情?

+0

嘿特里斯坦,我遇到了這個問題。我的遷移在分段應用上運行良好,但Rails在生產遷移後沒有選擇模式更改。我從來沒有必須重新啓動測功機,並且很好奇爲什麼在這種情況下有必要。你有沒有發現爲什麼重新啓動是必要的生產,而不是在分期? –

+0

您是否在使用'pipeline:promotion'來提升分段生產? –

回答

10

如果您通過遷移對數據庫進行更改,則需要在Heroku上重新啓動應用程序。當Rails以生產模式啓動時,它會緩存數據庫模式。遷移運行在一個正在運行的Web進程不知道的進程中。因此,爲了獲取所需的更改,至少需要重新啓動Web進程。如果您的應用程序在部署時閒置,並且運行了遷移,它將在應用程序啓動時選擇新的模式。

+1

更新我之前的建議,你可以運行'rake db:schema:cache:clear'並且它可以工作。通過Rails 4驗證。 –

0

這取決於我的猜測。一般來說,答案是NO。如果您在每次遷移後在本地重新啓動您的應用程序,則需要其他方式,我認爲這不是必需的。

-1

這不是必需的,因爲在遷移中我們只對數據庫進行更改。

1

您需要讓您的應用程序選擇新的遷移。重新啓動應用程序工作得很好。或者你可以清除模式緩存:

heroku run rake db:schema:cache:clear --app=app_name 
相關問題