M1芯片+Ruby3.1.2环境下搭建Rails报错的解决求助
搭建Rails环境遇到Bootsnap版本不兼容错误
我的Ruby版本:
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21]
执行rails -v或rails -s等命令时,出现以下错误:
/Users/xxx/.gem/ruby/3.1.2/gems/bootsnap-1.14.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require': incompatible library version - /Users/anhbui/.gem/ruby/3.1.2/gems/bootsnap-1.14.0/lib/bootsnap/bootsnap.bundle (LoadError) from /Users/xxx/.gem/ruby/3.1.2/gems/bootsnap-1.14.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require' from /Users/xxx/.gem/ruby/3.1.2/gems/bootsnap-1.14.0/lib/bootsnap/compile_cache/iseq.rb:3:in `<top (required)>' from /Users/xxx/.gem/ruby/3.1.2/gems/bootsnap-1.14.0/lib/bootsnap/compile_cache.rb:16:in `require_relative' from /Users/xxx/.gem/ruby/3.1.2/gems/bootsnap-1.14.0/lib/bootsnap/compile_cache.rb:16:in `setup' from /Users/xxx/.gem/ruby/3.1.2/gems/bootsnap-1.14.0/lib/bootsnap.rb:55:in `setup' from /Users/xxx/.gem/ruby/3.1.2/gems/bootsnap-1.14.0/lib/bootsnap.rb:97:in `default_setup' from /Users/xxx/.gem/ruby/3.1.2/gems/bootsnap-1.14.0/lib/bootsnap/setup.rb:5:in `<top (required)>' from /Users/xxx/Desktop/Rails/freelancer/config/boot.rb:4:in `require' from /Users/xxx/Desktop/Rails/freelancer/config/boot.rb:4:in `<top (required)>' from bin/rails:3:in `require_relative' from bin/rails:3:in `<main>'
环境配置:
- Ruby 3.1.2
- Yarn 1.22.19
- Node 19.0.1
- Rails 6.1.x(版本不确定)
解决方案
1. 重新编译Bootsnap原生扩展
这是最常见的修复方式,先卸载再重新安装:
gem uninstall bootsnap bundle install
或者直接重置gem到原始状态:
bundle exec gem pristine bootsnap
2. 指定兼容的Bootsnap版本
如果当前Bootsnap版本(1.14.0)与Ruby 3.1.2不兼容,尝试降级到稳定兼容版本。修改项目的Gemfile:
gem 'bootsnap', '~> 1.13.0'
然后执行更新:
bundle update bootsnap
3. 清理Bootsnap缓存
缓存文件损坏也可能导致该问题,清理缓存目录:
rm -rf tmp/cache/bootsnap*
4. 检查架构一致性
你的Ruby是arm64架构,确保Bootsnap是基于该架构编译的。查看gem架构:
gem list -d bootsnap | grep Architecture
如果显示x86_64,重新安装时指定架构:
ARCHFLAGS="-arch arm64" bundle install
内容的提问来源于stack exchange,提问作者Nguyen Cuc
相关产品推荐
相关产品推荐

