如何从Cap deploy命令访问rails_env?

时间:2014-04-11 17:58:43

标签: capistrano capistrano3

deploy.rb中,我认为:rails_env通常由require 'capistrano/rails'中的Capfile设置。我正在使用rails,但是没有使用内置的资产管道,因此,不要使用capistrano / rails,并且在切换时需要在:rails_env中手动设置deploy.rb的困境和生产部署。这似乎相当愚蠢,因为在执行cap staging deploycap production deploy时始终包含环境。我发布这个问题,因为看起来这可能是一个相当普遍的痛点,有一个微不足道的解决方案,但经过大量的谷歌搜索后,我空手而归。因此,我挖掘了Capistrano 3.1.0源代码,以找出如何访问在命令行中输入的阶段变量,并将跟进一个简短的答案,做一些解释。

1 个答案:

答案 0 :(得分:24)

简单的答案是在deploy.rb顶部附近添加以下行:

  

set:rails_env,fetch(:stage)

变量:stagecapistrano/setup中设置Capfile。此脚本为config/deploy中定义的每个阶段创建rake任务。在rake任务的定义中,您将找到以下内容:set(:stage, stage.to_sym),它是cap staging deploycap production deploy命令中的stage / rails_env变量。