卸载RVM安装rbenv后启动Rails项目仍调用RVM报错如何解决
问题根因分析
- RVM未完全卸载:仅执行常规卸载操作后,Shell配置文件中仍残留RVM的初始化脚本,RVM的环境变量优先级高于rbenv,导致系统优先加载RVM管理的Ruby 2.6.0环境,而非rbenv下的Ruby 2.6.3
- 报错的直接诱因:调用了RVM路径下与项目Ruby版本不兼容的puma gem,启动时绑定端口出现版本适配类的Socket异常
排查修复步骤
- 彻底删除RVM残留文件
执行rm -rf ~/.rvm删除RVM所有本地安装资源 - 清理Shell配置中的RVM脚本
依次打开~/.bash_profile、~/.bashrc、~/.zshrc、~/.profile四个文件,删除所有包含RVM初始化逻辑的行,常见形式为[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" - 确认rbenv配置正确
检查上述Shell配置文件中是否存在rbenv初始化配置,缺失则添加以下两行:
添加后执行export PATH="$HOME/.rbenv/shims:$PATH" eval "$(rbenv init -)"source ~/.zshrc(Zsh环境)或source ~/.bash_profile(Bash环境)重载配置,也可以直接重启终端让配置生效 - 验证Ruby环境切换成功
依次执行以下命令确认环境正常:which ruby:输出路径需以~/.rbenv/shims/ruby开头,不能出现.rvm相关路径ruby -v:确认输出版本为ruby 2.6.3- 进入项目根目录执行
rbenv local 2.6.3,固定项目使用的Ruby版本
- 重新安装项目依赖
执行gem install bundler && bundle install,将项目依赖的gem安装到rbenv对应2.6.3版本的gem库中 - 启动服务验证
执行rails s启动项目,此时不会再调用RVM路径下的资源,报错会自动消除
内容的提问来源于stack exchange,提问作者bazooka720
相关产品推荐
相关产品推荐

