Mac M1运行rails new时racc 1.5.2 gem原生扩展构建失败如何解决
解决方案
核心问题说明
报错的根本原因是当前调用了MAMP自带的x86架构Ruby 2.6版本,该版本缺失编译原生gem扩展所需的静态库,且和M1的arm架构不兼容,开发场景下不要使用系统或集成环境自带的Ruby版本。
操作步骤
第一步:配置适配M1的Ruby开发环境
- 打开原生终端(不要用Rosetta转译模式),先确保Homebrew已正常安装(M1原生版本)
- 安装Ruby版本管理工具rbenv:
brew install rbenv ruby-build - 安装原生适配M1的稳定Ruby版本:
rbenv install 3.1.4 - 设置全局默认Ruby版本:
rbenv global 3.1.4 - 将rbenv加入环境变量,如果你用zsh终端执行:
echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc;如果用bash终端执行:echo 'eval "$(rbenv init - bash)"' >> ~/.bash_profile - 重启终端后验证环境:执行
which ruby,返回路径为/Users/你的用户名/.rbenv/shims/ruby、执行ruby -v显示版本为3.1.4即说明配置成功
第二步:重新安装Rails并创建项目
- 执行命令安装Rails:
gem install rails(需要指定版本可添加参数-v 6.1.4.1) - 切换到你个人用户目录下的开发文件夹,执行
rails new myappname创建项目,此时会自动调用rbenv管理的Ruby版本,不会再触发MAMP相关路径的报错
可选异常修复
如果碰到Operation Not Permitted报错,执行命令给rbenv目录赋当前用户权限即可:sudo chown -R $(whoami) ~/.rbenv,不要用sudo执行gem安装操作。
可选MAMP兼容配置
如果需要保留MAMP的正常使用,只需确认rbenv的环境变量在PATH中的优先级高于MAMP路径即可,执行echo $PATH检查/Users/你的用户名/.rbenv/shims路径在/Applications/MAMP相关路径之前就不会产生冲突。
内容的提问来源于stack exchange,提问作者Nathan Leggatt
相关产品推荐
相关产品推荐

