我正在尝试为 Heroku 建立一种专业的部署方法,我的意思是:
- 通过保持小而频繁的部署(迭代/敏捷方法)最大限度地减少停机时间
- 尽可能自动化,这样我就不必担心胖手指或运行潜在的破坏性命令,因为我没有正确思考(即,生产系统上的“heroku run rake db:reset”)
- 允许简单的版本控制,因此我可以轻松(并立即)将生产系统回滚到以前的版本,如果发生错误,该版本可以工作
- 首先建立一个尽可能模仿生产系统的测试环境
- 确保在发生错误时备份数据库
由于 capistrano 不适合 Heroku,我的想法是接下来最好的事情是编写一个 ruby 脚本来处理我的所有自动化部署。根据https://gist.github.com/362873 ,我见过有人为此使用 rake 任务,但我认为 rake 并不是真正为这种功能而设计的。纯 ruby 脚本会是 rake 任务的首选替代方案吗?
部署到heroku 非常简单,但要使其专业化(即,用户不会收到错误页面),我需要将其自动化以弥补人为错误。一直要输入“git push heroku master”、“heroku run db:migrate”有点老了。
我正在尝试将其归结为单线部署,并且到目前为止还没有真正看到任何关于 Heroku 或 SO 的有用教程可以真正实现这一点。
我实际上编写自己的部署脚本代码很好,我只是对最佳的长期实践感到困惑:rake 任务、ruby 脚本或一些我还没有找到的 3rd-party 实用程序。
我确信有许多专业的开发团队使用 Rails 和 Heroku,但我还没有看到他们如何实现部署过程的细节。
我通常自己做很多开发,然后其他成员处理部署,但现在我也在尝试学习部署方面。