环境特定的Capefile capistrano3导轨4.1

时间:2014-10-29 13:03:36

标签: ruby-on-rails ruby rvm capistrano3

我使用capistrano3进行了rails 4.1 app和多级(暂存,生产)部署。

我想将它部署到一个阶段服务器(使用rvm)和一个生产服务器(使用ruby env)

默认情况下,一切都在生产服务器上运行良好,但没有安装rvm1-capistrnao3 gem并包含在Capefile中我无法部署到分段。

有没有办法要求' rvm1 / capistrano3'在Capefile中,只有当我部署到像

那样的升级时

cap staging deploy

2 个答案:

答案 0 :(得分:2)

以下是我为解决此问题所做的工作

我做了默认的capistrano多级设置,就像Doug Hall说的那样!

棘手的部分是在Capefile中包含rvm1-capistrano3的方法

请在此处查看deepak的解决方法https://github.com/capistrano/rvm/issues/49

所以在Capefile中不仅仅是require 'rvm1/capistrano3',而是像那样

task :use_rvm do
  require 'rvm1/capistrano3'
end

task 'staging' => [:use_rvm]

答案 1 :(得分:1)

运行cap install时,它会在config / deploy目录中创建一个名为config / deploy.rb的文件和两个文件:production.rb和staging.rb。将config / deploy.rb文件用于生产服务器和登台服务器共有的所有设置。将其他两个用于这些计算机上的相应设置。我在Capfile中需要'capistrano / rvm',但只能在config / deploy / staging.rb文件中使用它。 Capistrano执行公共config / deploy.rb FIRST,然后调用正确的staging.rb / production.rb文件,因此config / deploy.rb中的所有设置值都可以在staging.rb / production.rb文件中找到。