Rails与Ruby版本冲突,安装Rails 5.2.3时racc gem报错如何解决?
问题原因
racc 是 Ruby 生态中常用的解析器生成器,属于大量 gem 的间接依赖,你遇到报错是因为最新版的 racc 已经停止支持 Ruby 2.4 版本,安装时默认拉取最新版本就会触发版本不兼容错误,即使你没有在 Gemfile 中显式声明依赖 racc。
优先解决方案(无需升级Ruby)
原项目明确标注依赖 Ruby 2.4.2,优先选择不修改 Ruby 版本的方案,避免引入更多上层 gem 兼容问题:
- 第一步:在 Gemfile 开头(
source 'https://rubygems.org'行之后)添加显式声明,指定使用兼容 Ruby 2.4 的最高 racc 版本:gem 'racc', '~> 1.6.2' - 第二步:执行命令卸载本地已安装的所有 racc 版本,避免版本冲突:
gem uninstall racc -a - 第三步:重新执行依赖安装即可:
bundle install
备选方案(升级Ruby版本)
如果上述方案执行后仍有其他依赖兼容问题,再考虑升级 Ruby 版本,注意不要升级过高:
- 选择 Ruby 2.5.x 或者 2.6.x 版本即可,Rails 5.2.3 最高兼容 Ruby 2.6 系列版本,更高版本的 Ruby 会引发 Rails 本身的兼容问题
- 升级 Ruby 完成后,将 Gemfile 中
ruby '2.4.2'声明修改为你当前使用的 Ruby 版本,再执行bundle install
额外注意事项
原仓库标注的 Postgresql 版本大概率存在笔误(官方不存在 1.1.4 版本),推测应为 11.4 版本,安装 Postgresql 时请不要选择 15 及以上的新版本,避免后续 pg gem 连接数据库出现兼容问题。
内容的提问来源于stack exchange,提问作者DenizSS
相关产品推荐
相关产品推荐

