我仍然习惯了Rails开发生态系统。最近我学会了如何使用capistrano使用apache和passenger来部署到我的服务器,我喜欢如何将一组相当复杂的部署指令放到我的deploy.rb中,以便它们通过单个“cap deploy”调用执行,如果出现任何问题,请自动回滚。
现在我正在考虑在Heroku上部署我的项目,我希望能够在那里使用capistrano进行部署。但我一直无法找到有关如何执行此操作的任何文档。可能吗?是否有capistrano任务可以让我在Heroku上自动部署?
这甚至有意义吗?毕竟capistrano以特定的方式工作(ssh进入服务器)并假设一个特定的目录结构(公共/发布/共享等)。据我所知,Heroku无法实现这两个目标。但我仍然希望有capistrano的便利。我知道我可以将部署所需的步骤(git push / migrate / restart resque workers ...)放到一个rake任务中,并且我可以通过调用单个命令来部署;但我不会受到capistrano交易和回滚的好处,这在我看来非常重要。
我可能遗漏了一些关于这些技术如何融合在一起的基本信息。令我感到惊讶的是,我无法在任何地方找到关于这个主题的任何讨论。任何人都可以分享他们的经历吗?
答案 0 :(得分:37)
Heroku使用Git进行部署,并且不是capistrano友好的。事实上,哲学本身是不同的 - Heroku没有“服务器”,您可以通过SSH连接或根据需要自定义服务器。
Heroku使用Dynos作为预定义实例,具有特定的部署体系结构,可满足大多数Rails部署需求。您可以使用Heroku执行回滚,备份,迁移等操作,在某些情况下,比普通的capistrano脚本更复杂。
除非您的设置完全不同,否则您可以安全地使用Heroku for Rails(当然只使用Git)。如果没有,AWS是更好的选择。