执行heroku local遇bundler加载puma失败的技术求助
解决
bundler: failed to load command: puma架构不兼容问题 问题根源
从错误日志可明确判断:Puma的核心二进制文件puma_http11.bundle为x86_64架构,但你的Ruby环境是arm64(M系列芯片),二者架构不兼容导致无法加载。
解决方案
1. 彻底清理现有Puma及编译缓存
- 卸载所有版本的Puma:
gem uninstall puma --all - 强制清理Bundle缓存:
bundle clean --force - 删除项目中的
Gemfile.lock和vendor目录(若存在):rm Gemfile.lock && rm -rf vendor
2. 确保在arm64原生环境下重新安装
- 检查当前终端架构:
输出应为archarm64,若显示x86_64,说明终端开启了Rosetta:右键终端图标 → 「简介」→ 取消勾选「使用Rosetta打开」,重启终端。 - 重新安装依赖,强制本地编译(避免使用预编译的x86_64二进制包):
bundle install --no-deployment
3. 可选:锁定Puma到兼容Ruby 2.7的版本
Puma 6.x对Ruby 2.7的arm64支持存在兼容性问题,建议降级到稳定兼容版本:
修改Gemfile中的Puma配置:
group :production do gem "puma", "~> 5.6" end
修改后重新执行bundle install。
4. 验证安装结果
检查Puma二进制文件的架构:
file $(bundle show puma)/lib/puma/puma_http11.bundle
输出应包含arm64,确认架构匹配后,再执行:
heroku local
内容的提问来源于stack exchange,提问作者Chris Taylor
相关产品推荐
相关产品推荐

