无法更新Bundler:安装新版本后版本未生效的解决方法
解决Bundler版本更新后仍显示旧版本的问题
我来帮你搞定这个头疼的Bundler版本不更新问题!这种情况大多是因为Ruby环境的路径冲突,或者你用了错误的安装方式,下面分情况给你一步步解决:
第一步:先搞清楚当前bundle的位置
首先运行这个命令,看看系统现在调用的是哪个bundle:
which bundle
同时再看看gem的安装路径,辅助判断环境:
gem env
情况1:你用的是系统自带的Ruby(没装rbenv/rvm)
这种情况下sudo安装的bundler可能没覆盖旧版本,或者路径优先级不对:
- 先卸载旧版本的bundler:
如果提示有多个版本,跟着提示选择卸载旧的即可。sudo gem uninstall bundler -v 1.11.2 - 重新安装指定版本的bundler:
sudo gem install bundler -v 1.16.1 - 再次检查版本:
bundle version
如果还是不行,就直接用新版本的绝对路径运行:
先找到新版本bundle的位置:
sudo gem which bundler
输出会类似/usr/local/lib/ruby/gems/2.7.0/gems/bundler-1.16.1/lib/bundler.rb,那执行文件就在/usr/local/lib/ruby/gems/2.7.0/bin/bundler,你可以把这个路径加到系统PATH的最前面,或者直接用这个绝对路径运行bundle命令。
情况2:你用了rbenv、rvm这类Ruby版本管理器
重点:绝对不要用sudo装gem! sudo会把gem装到系统Ruby里,而你平时用的是版本管理器管理的Ruby环境:
- 先卸载系统里的bundler(避免冲突):
sudo gem uninstall bundler - 用普通用户身份安装bundler(不要加sudo):
gem install bundler -v 1.16.1 - 刷新版本管理器的路径缓存(rbenv需要这一步,rvm无需手动操作):
rbenv rehash - 最后检查版本:
bundle version
额外:如果项目lockfile指定了旧版本
看看你项目根目录的Gemfile.lock开头,有没有类似这样的行:
BUNDLED WITH
1.11.2
如果有的话,运行下面的命令更新lockfile里的bundler版本:
bundle update --bundler
这样之后运行bundle命令就会自动用新版本了。
另外,如果你只是想临时给当前项目用指定版本的bundler,可以这样运行命令:
bundle _1.16.1_ install
内容的提问来源于stack exchange,提问作者Headmaster
相关产品推荐
相关产品推荐

