使用Capistrano在Heroku上部署?

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

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

这甚至有意义吗? 毕竟capistrano以特定的方式工作(ssh进入服务器)并假设一个特定的目录结构(公共/发布/共享等)。 据我所知,Heroku无法实现这两个目标。 但我仍然希望有capistrano的便利。 我知道我可以将部署所需的步骤(git push / migrate / restart resque workers …)放到一个rake任务中,我可以通过调用单个命令来部署; 但我不会受益于capistrano交易和回滚,这在我看来非常重要。

我可能遗漏了一些关于这些技术如何融合在一起的非常基础的东西。 令我感到惊讶的是,我无法在任何地方找到关于这个主题的任何讨论。 谁能分享他们的经历?

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

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

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