You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Capistrano部署环境判断异常:比较运算符失效问题排查

Capistrano部署环境判断失效的解决方案

嘿,问题出在你对Capistrano变量的引用方式上!你写的:deploy_to是Ruby的符号类型,它和你用来比较的字符串完全不是一回事,这就导致你的条件判断永远不会成立。

在Capistrano里,要获取配置变量的实际值,得用fetch(:deploy_to)(或者直接写deploy_to,Capistrano的DSL会帮你解析)。给你修正后的代码:

namespace :deploy do
  task :published do
    on release_roles :all do
      # 正确获取deploy_to的实际值再做比较
      if fetch(:deploy_to) == "/home/master/applications/STAGING/public_html/"
        # 执行 staging 环境对应的命令
        execute "cd /in/..."
      else
        # 执行 production 环境对应的命令
        execute "cd /other/path/..."
      end
    end
  end
end

另外推荐一个更靠谱的写法:直接判断Capistrano的stage变量,不用硬编码路径,后期维护更方便:

namespace :deploy do
  task :published do
    on release_roles :all do
      case fetch(:stage)
      when :staging
        execute "cd /in/..."
      when :production
        execute "cd /other/path/..."
      end
    end
  end
end

这样不管你怎么调整deploy_to的路径,只要stage名称不变,判断逻辑就不会出错。

内容的提问来源于stack exchange,提问作者MikeMason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:26:20