2014-10-29 79 views
0

我有导轨4.1应用程序和capistrano3多阶段(分段,生产)部署。特定环境Capefile capistrano3导轨4.1

我想将它部署到一个阶段服务器(使用RVM)和一个生产服务器(使用红宝石ENV)

默认情况下,一切工作良好生产服务器上,但没有rvm1-capistrnao3安装,其中包括宝石在Capefile我无法部署到分期。

是否有需要在Capefile“rvm1/capistrano3”的方式,只有当我部署到举办这样的

cap staging deploy

回答

1

当您运行帽安装,它会创建一个名为config文件/部署。 rb和config/deploy目录中的两个文件: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文件中找到。

+0

但是当我需要Capefile中的'rvm1/capistrano3',这打破了我的产品设置...并且cap production部署死于以下错误:''/ home/user/.rvm'中找不到rvm。' – 2014-10-29 14:03:07

+0

我正在寻找使用rvm1-capi只有在部署到升级时才能使用strano。或者在部署到生产时在配置/生产中以某种方式忽略它 – 2014-10-29 14:10:17

+0

我认为它正在寻找的/home/user/.rvm在您的生产计算机上,而不是您的本地(开发)计算机,对不对?我实际上在我所有的(本地/舞台和制作)机器上使用rbenv。然而,当将Capistrano宝石列在我的Gemfile开发组中时,我通过如下所示的“require:false”: gem'capistrano-rbenv','〜> 2.0',require:false – 2014-10-29 14:28:21

2

这里是我做了什么来解决它

我做了Capistrano的默认设置多级,像道格·霍尔说!

棘手的部分是包括在Capefile

见Deepak的解决办法在这里https://github.com/capistrano/rvm/issues/49

因此,而不是在Capefile只是require 'rvm1/capistrano3' rvm1-capistrano3的方式,那样做

task :use_rvm do 
    require 'rvm1/capistrano3' 
end 

task 'staging' => [:use_rvm]