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

为什么Bundler不使用系统gem?如何配置使其复用系统已安装的gem

Bundler 无法复用系统路径已安装Gem的解决方案

可能的问题原因

  • 项目本地.bundle/config中配置了BUNDLE_PATH: "vendor/bundle":该配置会让Bundler默认优先将Gem安装到项目本地的vendor/bundle目录,跳过系统GEM路径的检测,哪怕移除了BUNDLE_DISABLE_SHARED_GEMS配置也不会主动读取系统Gem
  • 全局Bundler配置残留:如果全局~/.bundle/config中也配置了BUNDLE_PATH或BUNDLE_DISABLE_SHARED_GEMS,会覆盖项目局部配置的效果
  • 老版本Bundler的配置缓存问题:1.15.x版本的Bundler存在配置缓存逻辑,修改配置后如果没有清理旧的本地Gem缓存,会沿用之前的安装逻辑
  • 曾执行过bundle install --deployment:部署模式会强制锁定本地Gem路径,禁用系统Gem复用,且配置会被持久化到.bundle/config中

修复步骤

  1. 清理冗余配置
    • 删除项目.bundle/config中的BUNDLE_PATH、BUNDLE_DISABLE_SHARED_GEMS配置项,仅保留需要的BUNDLE_BIN: "vendor/bin"即可,也可直接删除整个.bundle目录做干净测试
    • 检查全局~/.bundle/config文件,删除其中的BUNDLE_PATH、BUNDLE_DISABLE_SHARED_GEMS相关配置
  2. 开启系统Gem优先配置
    执行以下命令开启项目局部的系统Gem优先配置:
    bundle config set --local path.system true
    
    该配置会明确告诉Bundler优先读取系统GEM路径下已安装的Gem,不会强制安装到项目本地目录
  3. 清理历史缓存
    删除项目下之前生成的本地Gem缓存目录:
    rm -rf vendor/bundle
    
  4. 验证效果
    重新执行bundle install,即可看到Using提示,直接复用/var/lib/gems/2.3.0路径下已安装的Gem

临时验证方案

如果需要快速测试效果,可直接执行带参数的安装命令,跳过持久化配置:

bundle install --system

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:24:03