核心原因是macOS升级重置环境依赖链:系统Ruby被SIP锁定、Homebrew Portable Ruby失效、底层库版本不匹配或PATH/shell配置被覆盖;需先确认Ruby来源(which ruby)、修复PATH(补全brew shellenv和ruby/bin路径)、重建gem与bundler环境(gem install bundler、bundle install --full-index),必要时reinstall ruby或切换Homebrew镜像源。

系统更新后 Ruby 报错,核心原因是 macOS 升级会重置或干扰开发环境依赖链:系统 Ruby 被锁定、Homebrew 的 Portable Ruby 失效、OpenSSL/Readline 等底层库版本不匹配,或是 PATH 和 shell 配置被覆盖。直接修复不是重装 Ruby,而是理清三层关系——Ruby 运行时、Gem 包管理器、Bundler 锁定逻辑。
检查当前 Ruby 是否来自 Homebrew
系统自带 Ruby(/usr/bin/ruby)在更新后常被 SIP 保护,无法写入 gems,且版本过旧(如 Sonoma 仍为 2.6.x)。先确认你用的是哪个 Ruby:
- 运行
which ruby—— 如果返回/usr/bin/ruby,说明没切换到 Homebrew 版本 - 运行
brew --prefix ruby查看 Homebrew Ruby 安装路径(通常是/opt/homebrew/opt/ruby) - 再执行
/opt/homebrew/opt/ruby/bin/ruby -v确认新版 Ruby 是否已安装
修复 PATH 与 shell 配置
系统更新常清空或覆盖 ~/.zshrc,导致 brew 安装的 Ruby 不在命令搜索路径中。需手动补全:
- 打开
~/.zshrc:nano ~/.zshrc - 确保包含这两行(M1/M2 芯片):
eval "$(/opt/homebrew/bin/brew shellenv)"export PATH="/opt/homebrew/opt/ruby/bin:$PATH" - 如果还用 gem 安装了 rails、bundler 等可执行工具,加上 gem bin 路径:
export PATH="/opt/homebrew/lib/ruby/gems/*/bin:$PATH" - 保存后执行
source ~/.zshrc,再验证ruby -v和which ruby
重建 gem 与 bundler 环境
系统更新可能让已有 gem 编译产物失效(尤其含 C 扩展的包),或使 Bundler 版本与 Gemfile.lock 冲突:
- 先升级 Bundler:
gem install bundler - 进入项目目录,删除
vendor/cache和tmp/(如有) - 运行
bundle install --full-index强制刷新依赖解析 - 若报 OpenSSL 相关错误(如
cannot load such file -- openssl),说明 Ruby 编译时链接的 OpenSSL 被更新破坏,需重装 Ruby:brew reinstall ruby
应对 Homebrew 自身异常(常见于更新后)
brew 命令报错“Failed to upgrade Homebrew Portable Ruby”或 “curl: (22) 404”,本质是它自带的 Ruby 运行时镜像源不同步:
- 临时切回官方源更新:
git -C $(brew --repo) remote set-url origin https://github.com/Homebrew/brew - 再执行
brew update - 如仍失败,可跳过 Portable Ruby 更新(仅限临时开发):
export HOMEBREW_NO_AUTO_UPDATE=1,但建议后续修复镜像配置 - 国内用户推荐用 HomebrewCN 脚本一键切换镜像:
/bin/bash -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"


















