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

运行ROR服务或rubocop命令时遇gem扩展未构建报错求助

解决Gem扩展未编译的重复提示问题

核心原因

这些重复提示说明指定版本的gem的C扩展未正确构建,通常是Ruby版本切换、系统环境变更(如更新Xcode/系统库)或gem安装时编译失败导致。重复出现大概率是环境中存在多个gem安装路径,或是bundler重复扫描了相同gem。

分步解决方案

1. 逐个修复有问题的gem

直接执行提示里的命令,单独修复每个报错的gem:

gem pristine racc --version 1.6.0
gem pristine bcrypt --version 3.1.18
gem pristine ffi --version 1.15.5
gem pristine puma --version 5.6.4
gem pristine redcarpet --version 3.5.1
gem pristine websocket-driver --version 0.7.5

2. 批量修复所有异常gem

如果需要修复的gem太多,用批量命令处理:

gem list | grep -E '(racc|bcrypt|ffi|puma|redcarpet|websocket-driver)' | awk '{print $1 " --version " $2}' | xargs -L1 gem pristine

或者直接修复所有需要重建扩展的gem(耗时较长,适合批量场景):

gem pristine --all

3. 重置Bundler依赖

如果使用Bundler管理依赖,强制重新安装所有gem以确保扩展编译正常:

bundle install --force

4. 清理冗余gem路径

若重复提示仍存在,检查是否有多余的gem安装路径:

gem env

查看GEM PATHS区域,若有旧的、不再使用的gemset或路径,用gem uninstall卸载对应重复版本的gem。

5. 补全系统依赖

部分gem的C扩展需要系统库支持:

  • bcrypt:macOS执行brew install openssl,Linux执行apt-get install libssl-dev(Debian/Ubuntu)或yum install openssl-devel(CentOS/RHEL)
  • ffi:macOS执行brew install libffi,Linux执行apt-get install libffi-dev或yum install libffi-devel
  • puma:确保安装了Xcode命令行工具(macOS)或build-essential包(Linux)

验证修复

运行rubocop或rails s,检查重复提示是否消失,命令运行速度是否恢复正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:19:58