Ruby on rails 每次迁移后是否需要重新启动Heroku?

Ruby on rails 每次迁移后是否需要重新启动Heroku?,ruby-on-rails,heroku,migration,Ruby On Rails,Heroku,Migration,最近我遇到了一个问题,我的db方案更改没有反映在Heroku PG上。我仔细检查了迁移和seed是否成功。更奇怪的是,db方案的更改在staging heroku部署上运行良好(在完全相同的迁移/种子之后)。在四处搜索之后,我了解到您应该在迁移后通过以下方式重新启动heroku: heroku restart --app=app_name 我从来没有这样做过(我不是一个老手,但我以前运行过很多迁移,也从来没有因为这个特殊的原因重新启动过heroku) 每次迁移之后,我真的需要重新启动herok

最近我遇到了一个问题,我的db方案更改没有反映在Heroku PG上。我仔细检查了迁移和seed是否成功。更奇怪的是,db方案的更改在staging heroku部署上运行良好(在完全相同的迁移/种子之后)。在四处搜索之后,我了解到您应该在迁移后通过以下方式重新启动heroku:

heroku restart --app=app_name
我从来没有这样做过(我不是一个老手,但我以前运行过很多迁移,也从来没有因为这个特殊的原因重新启动过heroku)


每次迁移之后,我真的需要重新启动heroku吗?或者这更像是一件逐案处理的事情?

我想这要看情况而定。一般来说,答案是否定的。如果每次迁移后都在本地重新启动应用程序,那么它是必需的,否则我认为它不是必需的

如果通过迁移对数据库进行更改,则需要在Heroku上重新启动应用程序。当Rails以生产模式启动时,它缓存DB模式。迁移在运行的web进程不知道的一次性进程中运行。因此,要让它接受更改,您至少需要重新启动web进程。如果您的应用程序在部署时处于空闲状态,并且您运行了迁移,那么它将在应用程序启动时接收新架构。

您需要让应用程序接收新迁移。重新启动应用程序工作正常。或者,您可以清除架构缓存:

heroku run rake db:schema:cache:clear --app=app_name

更新我之前的建议,您可以运行
rakedb:schema:cache:clear
,它就可以工作了。通过Rails 4验证。嘿,特里斯坦,我正好遇到了这个问题。我的迁移在一个临时应用程序上运行得很好,但是Rails在生产环境中迁移之后没有接收到模式更改。我以前从来没有重新启动过dyno,我很好奇为什么在这种情况下有必要重新启动dyno。你有没有发现为什么重新启动在生产中是必要的,而不是在暂存中?你是否使用了
管道:promote
来从暂存-->生产中升级?我承认我还没有在Heroku上尝试过这一点(我不习惯在生产中这样做,因为它没有正常工作的机会),但基于我对模式缓存工作原理的理解,在Heroku上运行此rake任务似乎不会实际清除单个dynos上的模式缓存。也就是说,dynos存储自己的缓存,rake任务在自己的dynos上运行。这是否意味着这个rake任务实际上与Heroku不兼容?