【问题标题】:Rails 3: HEROKU staging and production repo managmentRails 3:HEROKU 暂存和生产仓库管理
【发布时间】:2011-09-22 10:30:38
【问题描述】:
根据他们的文档,我已将我的应用程序设置为在 Heroku 上运行,并提供暂存和生产环境。 http://devcenter.heroku.com/articles/multiple-environments
使用 staging 应用程序进行管理似乎非常简单,将整个部署或新分支推送到 staging 中进行测试。我想知道的是如何管理生产版本。
在部署新代码时如何保持生产正常运行?我是从暂存中提取更改,还是重新部署整个应用程序并合并更改?
其次,在所有这些过程中,我如何管理和保持我的数据库完好无损?我习惯于在本地运行,如果你进行新的部署和新的 rake :db:migrate,你会丢失所有的数据库数据。在生产中如何做到这一点才不会丢失您的记录?
感谢您,欢迎提供有关 heroku 管理的任何其他提示。
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-3
heroku
【解决方案1】:
通常,您在本地进行更改,包括迁移或其他。在将更改推送到生产应用程序之前,将更改推送到暂存应用程序以仔细检查一切是否正常。
如果您在更改中添加了迁移,请务必运行 heroku run rake db:migrate 来迁移您的暂存数据库。运行 rake db:migrate 应该不破坏任何数据,只要您的迁移是正确的 - 即没有奇怪的数据篡改,只是标准的添加/重命名/等。列或引入新表。 (很明显,如果你在迁移中删除了一个表,它就会消失。)
然后,如果您的暂存应用程序一切正常,请将更改推送到您的生产环境,如果您有任何新的迁移,请再次运行 heroku run rake db:migrate。如果事情不正常,请运行 heroku help 以获取您可以使用的命令列表 - 特别是与版本有关的命令,以便您可以恢复到以前的版本。另外heroku logs 非常有用,heroku console(实际命令可能略有不同),不过当你启动控制台时,要非常小心,不要过多地篡改数据。
使用 Heroku,不需要部署命令 - 就在您 git push 时,您的更新代码就在那里。如果您以前使用过 capistrano,则无需使用 capistrano 进行“cap deploy”。
希望这会有所帮助。