Heroku 迁移数据库更改

3

我对我的应用程序进行了更改,包括添加模型和向现有模型添加列。我正在使用Rails 3.1,并且知道我必须在部署之前预编译资产。一旦我运行git push heroku masterheroku rake db:migrate,我是否应该期望任何错误?

我试图将停机时间保持最少,因为用户将在部署期间与站点进行交互。

更新

一切似乎都很好。通过推送和运行Rake DB命令完成了部署。

3个回答

3
您可能想要考虑将应用程序放入维护模式,而不是在更新期间向用户提供不可预测的结果。通过弹出维护消息,您可以最大程度地减少混乱。您还可以自定义它。
您可以在此处阅读有关如何操作的说明:http://devcenter.heroku.com/articles/maintenance-mode

我甚至不知道Heroku有这个选项。我会在某个时候试一试。 - Dru

0

首先,我会在开发环境上测试这个(仍然在Heroku上)。这是确保不会出现错误的唯一真正方法。

其次,Heroku尝试为您预编译资产,因此通常您不需要做任何事情。也就是说,它只适用于“基本情况”,您所做的任何更改通常都会破坏它,并且通常您的应用程序将在生产中寻找“all.css”。因此,您可能需要尝试一下,然后根据情况从日志中排除错误。

第三,当用户在线时进行更改总是增加风险。如果您真的关心,我会在非工作时间进行此操作。我特别避免在高峰期部署Ruby版本更改。

最后一点是,如果您需要对新代码进行迁移,您将中断实时用户。我不知道有任何一种方法可以在单个命令中推送和迁移。在推送和迁移之间始终会有一个小的时间差,在此期间,如果您正在提供实时流量,则会有具有旧模式的新代码,这可能会导致错误。

希望这可以帮助到您。


谢谢。您能否澄清一下您所说的在Heroku上的开发环境中“测试”它的意思?您是建议我创建另一个Heroku项目,将代码(未更改)加载到其中并部署更改吗? - Dru

0

在部署时,将网站置于维护模式是最佳实践。

heroku maintenance:on

完成后,可以执行以下操作:

heroku maintenance:off


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接