在deploy.rb
中,我认为:rails_env
通常由require 'capistrano/rails'
中的Capfile
设置。我正在使用rails,但是没有使用内置的资产管道,因此,不要使用capistrano / rails,并且在切换时需要在:rails_env
中手动设置deploy.rb
的困境和生产部署。这似乎相当愚蠢,因为在执行cap staging deploy
或cap production deploy
时始终包含环境。我发布这个问题,因为看起来这可能是一个相当普遍的痛点,有一个微不足道的解决方案,但经过大量的谷歌搜索后,我空手而归。因此,我挖掘了Capistrano 3.1.0
源代码,以找出如何访问在命令行中输入的阶段变量,并将跟进一个简短的答案,做一些解释。
答案 0 :(得分:24)
简单的答案是在deploy.rb
顶部附近添加以下行:
set:rails_env,fetch(:stage)
变量:stage
在capistrano/setup
中设置Capfile
。此脚本为config/deploy
中定义的每个阶段创建rake任务。在rake任务的定义中,您将找到以下内容:set(:stage, stage.to_sym)
,它是cap staging deploy
或cap production deploy
命令中的stage / rails_env变量。