ruby-on-rails – Capistrano,Rails 3.2,标准配方?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Capistrano,Rails 3.2,标准配方?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在开发Rails一段时间,但是到现在为止避免使用capistrano.

试图弄清楚如何开始,我对于资产管道部署的相当“标准”导轨3.x感到困惑.也许是因为在Google周围寻找历史的各个方面的答案,不同的历史时期,不同的东西被建立在上限之中.

我有一个应用程序,我保持在git,轨道3.2,资产管道,部署到只有一个主机与乘客.

想想,我基本上需要上限:

从git部署?
>在git中设置一个标签,以进行部署(和/或使用部署分支?无论是最上限的标准,如果有这样的话)
> bundle install –deployment
> rake db:migrate
耙资产:预编译
> touch tmp / restart.txt

哦,废话,还有一件可怪的事情:

想想我将在部署服务器上使用全系统的rbenv安装.不知道这是什么.

什么是最标准,简单,可维护的方式来拥有帽子做所有这些事情?有什么我错过的吗?如果我指定的一些不符合标准,我很乐意使用标准的最佳实践(可能有例外或两个,我真的想要每个部署的git标签,即使这不是一个标准的最佳做法,虽然我会认为会是,看起来很困惑的文档它如何工作)

这里有简单的答案吗?

编辑:是的,我看了Cap维基.这可能是因为我很慢,但是我在那里找到了我没有的答案.甚至没有一个“入门”文档.没有关于盒盖配方中的默认值实际上是什么的文档.等等

更新:我写了自己的指南后,弄清楚了. https://gist.github.com/2161449

解决方法

那么,不用使用capistrano就是一个祝福:-).我越来越不喜欢它,但公平地说,它已经好多了,而这里的文档 https://github.com/capistrano/capistrano/wiki/解决了大部分的问题 – 关于RVM的部分可能足以作为rbenv的替代方法.您的配置应该与开箱即用的文件一起工作.

编辑:是的,你需要做自己的标签,但关键是想想你在capfile中写的方法只是系统命令(记住你可能没有你的正常shell路径和其他环境).按照其他git命令的例子,你会很好.

编辑:更好的答案(也许:-)

>去这里:https://github.com/capistrano/capistrano/wiki/2.x-From-The-Beginning
宝石安装capistrano(注意,通常这不属于你的Gemfile)
> cd
> capify.创建app / Capfile和app / config / deploy.rb
>您正在使用资产管道,因此在Capfile取消注释中加载’deploy / assets’
>现在,看看deploy.rb

>应用程序名称是一个名称,如“my_application”
资源库是您的源代码控制回购的URL,例如myusername@github.com:yourrepo / yourproj.git
> scm:git(对,如果不是,同样的想法:上面的URL和这个SVN,或者什么)
> role:web“www.example.com”,由于您的:db和:app都在一个框上,那些都是一样的
>你正在使用Passenger,所以按照指示删除这些行.
>不确定,但您可能需要在顶部需要“bundler / capistrano”
>您将需要一个集合:deploy_to,<远程安装路径>也许“/ var / www”
>按照指南中的其他步骤
>假设这些和我错过的步骤,检查所有这一切,并确保您的应用程序被检入(并推,如果git),并执行cap部署:设置

假设安装程序会相应地配置您的服务器.这里最可能的错误是您当前的机器需要ssh到远程机器的权限,远程机器需要访问源代码管理库.公钥是你的朋友.

之后,工作流程是:

>进行更改
>在本地测试
提交,并推送到git
> cap部署迁移(仅当您完成迁移时才需要迁移部分)

大多数组织都有某种分段或测试服务器.寻找“多级”来获取它,以便您可以进行帽子测试部署和帽子分期部署等.

要在git上部署一个分支(我认为一个标签),它的上限是-S< branch / tagname>部署(确保它的资本S,可能是小写).

一旦你这样做,你可能会在部署之前或之后要做的事情 – 例如发送电子邮件,重新生成站点地图,备份数据库等等.使用之前或之后的钩子编写自己的任务.

所以最重要的一点是,所有的文件都假定你知道它是怎么做的.简而言之,它使用ssh(ruby的net-ssh)从任何本地工作站部署远程服务器上执行命令.它会查看源代码树的头部(或指定的标签或分支),将其拉入服务器的新位置,执行其他操作(迁移,资源预编译)并准备好应用程序;一旦它看起来不错,它会改变一个符号链接(例如/ var / www / current指向新的位置,然后(在Passenger的情况下)调用touch app / tmp / restart.txt来使服务器重新启动.

更好?

猜你在找的Ruby相关文章