Ruby 3.1.x环境下bundle install安装mini_racer 0.8.0失败求助
解决mini_racer 0.8.0安装时Psych::Parser的NoMethodError问题
核心原因分析
这个错误源于Ruby 3.1+对Psych库的API做了变更,而mini_racer 0.8.0依赖的libv8-node版本仍在使用已废弃的Psych::Parser.parse方法,导致原生扩展构建失败。即使切回Ruby 3.0.4,bundle缓存或残留的扩展文件也可能导致问题持续存在。
分步解决方案
1. 彻底清理缓存与残留文件
先移除所有可能干扰的缓存和旧构建文件:
# 清理bundle全局缓存 bundle clean --force # 删除项目本地bundle目录(若存在) rm -rf vendor/bundle # 卸载相关gem并删除本地缓存 gem uninstall mini_racer libv8-node rm -rf ~/.bundle/cache/gems/mini_racer-* ~/.bundle/cache/gems/libv8-node-*
2. 升级mini_racer至兼容版本
mini_racer 0.9.0及以上版本已修复Ruby 3.1+的Psych API适配问题,修改Gemfile:
# 替换原有mini_racer声明 gem 'mini_racer', '>= 0.9.0'
执行更新命令:
bundle update mini_racer
3. 补全Ubuntu系统依赖
Ubuntu 22.04环境下安装libv8-node需要依赖基础编译库,先安装缺失组件:
sudo apt update sudo apt install build-essential libssl-dev libnode-dev
4. 强制重新构建扩展
若仍失败,临时启用Psych兼容模式后重新安装:
export RUBYOPT="-r psych" bundle install --force
验证安装有效性
进入Rails控制台验证mini_racer是否正常加载:
require 'mini_racer' context = MiniRacer::Context.new context.eval('1 + 2') # 正常返回3则说明安装成功
内容的提问来源于stack exchange,提问作者user2579934
相关产品推荐
相关产品推荐

