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

MacOS下rails s启动失败:无法加载nokogiri/nokogiri(LoadError)

解决MacOS休眠后Rails启动触发nokogiri LoadError的问题

问题根源

MacOS休眠唤醒后,系统动态链接库缓存或Ruby的gem加载路径会出现异常,尤其是当你通过bundle install --path vendor/bundle把gem安装到项目本地vendor目录时,nokogiri的原生扩展文件路径会无法被正确识别,从而抛出cannot load such file -- nokogiri/nokogiri (LoadError)。

永久修复方案

1. 取消gem本地路径安装(推荐)

打开项目根目录下的.bundle/config文件,删除或注释BUNDLE_PATH: "vendor/bundle"这一行,然后执行:

bundle install

这样gem会安装到Ruby全局环境或rbenv/rvm的专属gem目录,避开本地路径在休眠后的加载错乱问题。

2. 重置Ruby加载缓存

每次休眠后无需重装所有gem,只需重置Ruby的gem加载路径缓存:

bundle exec ruby -e 'Gem.clear_paths'

之后直接启动服务即可:

rails s
# 或
./bin/dev

3. 重新编译nokogiri原生扩展

如果缓存重置无效,直接重新编译nokogiri的原生扩展:

bundle exec gem uninstall nokogiri
bundle exec gem install nokogiri --platform=ruby

也可以通过bundle配置强制编译:

bundle config build.nokogiri --use-system-libraries
bundle install

4. 调整MacOS休眠模式(可选)

部分用户反馈关闭快速休眠能缓解这类问题,执行以下命令后重启电脑生效:

sudo pmset hibernatemode 0

⚠️ 注意:此操作会关闭休眠时内存写入磁盘的功能,若意外断电会丢失未保存数据,请谨慎使用。

快速临时修复

不想改动配置的话,每次休眠后无需删除整个vendor目录,仅重装nokogiri即可:

bundle install --force nokogiri

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:47:06