26

我仍然习惯于 Rails 开发生态系统。最近我学会了如何使用 capistrano 使用 apache 和乘客部署到我的服务器,我喜欢如何将一组相当复杂的部署指令放入我的 deploy.rb 以便通过单个“cap deploy”调用执行它们,如果出现任何问题,会自动回滚。

现在我正在考虑在 Heroku 上部署我的项目,并且我希望能够使用 capistrano 进行在那里的部署。但是我一直找不到任何有关如何执行此操作的文档。是否可以?是否有 capistrano 任务可以让我在 Heroku 上自动部署?

这甚至有意义吗?毕竟 capistrano 以特定方式工作(通过 ssh 进入服务器)并采用特定的目录结构(public/releases/shared 等)。据我所知,这两种情况在 Heroku 中都是不可能的。但我仍然想享受 capistrano 带来的便利。我知道我可以将部署所需的步骤(git push/migrate/restart resque workers...)放入单个 rake 任务中,并且我可以通过调用单个命令来方便地进行部署;但我不会享受 capistrano 事务和回滚的好处,这在我看来非常重要。

我可能遗漏了一些关于这些技术如何组合在一起的非常基本的东西。让我有点吃惊的是,我在任何地方都找不到关于这个主题的任何讨论。任何人都可以分享他们的经验吗?

4

1 回答 1

38

Heroku 使用 Git 进行部署,并且对 capistrano 不友好。事实上,哲学本身是不同的——Heroku 没有“服务器”,您可以通过 SSH 访问或根据您的需要自定义服务器。

Heroku 使用 Dynos,这是预定义的实例,具有特定的部署架构,涵盖了大多数 Rails 部署需求。您可以使用 Heroku 执行回滚、备份、迁移等操作,在某些情况下,比普通 capistrano 脚本更复杂。

除非您的设置完全不同,否则您可以安全地使用 Heroku for Rails(当然只有 Git)。如果没有,AWS 是更好的选择。

于 2012-10-22T11:58:56.770 回答