You need to enable JavaScript to run this app. cap production deploy报rbenv: bundle command not found如何修复
优惠活动
大模型
产品
解决方案
定价
更多

cap production deploy报rbenv: bundle command not found如何修复

问题根因

部署报错的核心原因是配置与服务器实际版本管理工具不匹配:

  • 当前Capfile强制引入了capistrano/rbenv适配插件,整个部署流程会按照rbenv的路径规则加载Ruby运行环境、执行所有shell命令
  • 生产服务器实际使用rvm管理Ruby版本,服务器上并未部署rbenv工具链,rbenv的路径规则下自然找不到已安装在rvm目录下的bundle可执行程序,最终触发退出码127、rbenv: bundle: command not found的报错
  • 虽然服务器手动执行bundle -v、ruby -v可以正常返回结果,但这是因为用户交互式shell已经加载了rvm的环境配置;而Capistrano的非交互式SSH连接不会加载用户shell的默认环境配置,完全依赖引入的版本管理插件来加载对应环境路径。
修复步骤

按照以下顺序调整配置即可解决问题:

  • 移除Capfile中错误的rbenv相关配置
    • 删掉require 'capistrano/rbenv'这行插件引入代码
    • 删掉set :rbenv_ruby, '2.2.10'这行rbenv版本配置代码
  • 引入rvm对应的Capistrano适配插件
    • 在Capfile的插件引入块中添加require 'capistrano/rvm'
    • 在Capfile中新增rvm版本配置,与服务器实际安装的Ruby版本保持一致:set :rvm_ruby_version, '2.2.10'
  • 安装对应Capistrano依赖
    • 在项目Gemfile的部署依赖分组中添加gem 'capistrano-rvm'
    • 本地执行bundle install安装该插件,避免加载任务时找不到对应代码
  • 预校验配置有效性
    • 本地执行cap production rvm:check,确认插件可以正常识别服务器上的rvm安装路径、对应Ruby版本与bundler可执行文件路径
注意事项
  • 禁止同时在Capfile中引入rbenv、rvm两个版本管理插件,二者的环境加载逻辑存在冲突,极易出现路径匹配混乱的问题
  • 当前服务器上rvm安装在deployer用户的本地目录/home/deployer/.rvm/下,无需额外配置全局环境变量,capistrano-rvm插件会自动对应用户目录下的rvm路径
  • 完成所有配置调整后,重新执行cap production deploy即可正常通过bundler:install任务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 01:36:03