如何从Cap deploy命令访问rails_env?

jea*_*rlu 11 capistrano capistrano3

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

jea*_*rlu 25

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

set:rails_env,fetch(:stage)

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