2014-05-23 49 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 
相关问题