Mac M1环境下Rails无法识别rbenv指定的Ruby 3.1.2版本
M1 Mac下rbenv安装Ruby 3.1.2后Rails仍识别系统旧版本Ruby的问题
问题现象
- 执行
rbenv version和ruby -v均显示当前Ruby版本为3.1.2 - 执行
rails s、rails new app时,提示使用Ruby 2.6.8,与Gemfile指定的3.1.2不符,且大量Gem扩展未构建 - 项目外执行
rails,提示Rails7要求Ruby2.7.0+,当前版本为2.6.8 which rails显示路径为/usr/local/bin/rails- 已尝试
sudo gem pristine --all、重装Rails、rbenv rehash、bundle install,问题未解决
解决步骤
1. 检查并修复rbenv环境变量配置
打开你的Shell配置文件(~/.zshrc或~/.bash_profile),确认以下配置存在且位于其他PATH配置之前:
export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init - zsh)" # Bash用户替换为eval "$(rbenv init - bash)"
保存后执行source ~/.zshrc(或对应配置文件)刷新环境变量。
2. 卸载系统全局的Rails
/usr/local/bin/rails属于系统级旧Ruby环境的Rails,需彻底移除:
sudo gem uninstall rails -a -x
参数说明:-a卸载所有Rails版本,-x删除关联的可执行文件。
3. 在rbenv管理的Ruby环境下重装Rails
确认当前Ruby版本为3.1.2(rbenv version验证),执行:
gem install rails
安装完成后执行rbenv rehash更新rbenv的可执行文件映射。
4. 验证修复结果
执行which rails,应输出~/.rbenv/shims/rails;执行rails -v,应显示与Ruby 3.1.2兼容的Rails版本。
5. 项目内重新配置依赖
进入项目目录,若没有.ruby-version文件,执行rbenv local 3.1.2创建,然后重新安装依赖:
bundle install
内容的提问来源于stack exchange,提问作者Vicente Espinosa
相关产品推荐
相关产品推荐

