Ruby on Rails应用运行报错:bundle命令执行时Gem原生扩展构建失败
解决racc原生扩展编译失败问题
问题根源
你用的系统自带Ruby 2.6版本和racc 1.6.1不兼容——这个版本的racc要求Ruby 2.7及以上。另外系统自带Ruby权限受限,还可能缺少编译依赖,都会导致原生扩展构建失败。
解决办法
办法1:升级Ruby版本(推荐)
系统Ruby版本老旧且管理不便,建议用版本管理器安装合适的Ruby版本:
- 以rbenv为例(Mac系统):
- 先安装Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - 安装rbenv:
brew install rbenv - 初始化rbenv:
rbenv init,跟着提示把配置代码添加到~/.zshrc或~/.bashrc中 - 安装Ruby 2.7.x或更高版本,比如:
rbenv install 2.7.8 - 给当前项目指定该Ruby版本:
rbenv local 2.7.8 - 重新执行
bundle install(无需加--full-index,除非源访问有问题)
- 先安装Homebrew:
办法2:降级racc版本
如果暂时不想升级Ruby,可以指定兼容Ruby 2.6的racc版本:
- 在Gemfile中添加一行:
gem 'racc', '~> 1.5.2' - 执行
bundle update racc - 再运行
bundle install
办法3:补全编译依赖(Mac系统)
如果是缺少编译工具导致的失败,先安装Xcode命令行工具:xcode-select --install,之后再重试bundle命令。
内容的提问来源于stack exchange,提问作者Shiva Kumar Pothunoori
相关产品推荐
相关产品推荐

