运行特定版本的 bundler
Run specific version of bundler
Ruby小(没)技(鸟)巧(用)系列。
当你同时安装了两个版本的bundler,比如2.0.1和1.17.2,默认情况下 bundle exec
等命令都是使用的最新版本的bundler;而你要维护的程序比较古老,那么你可能就会遇到这个神奇的问题:
Bundler could not find compatible versions for gem "bundler":
rails (= 5.0.3) was resolved to 5.0.3, which depends on
bundler (>= 1.3.0, < 2.0)
Current Bundler version:
bundler (2.0.1)
This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?
解决方法一就是升级rails版本,即使你无法升级次版本,升级patch号也是可解决问题的,例如上面的情况就可以把 rails 5.0.3 升级到 5.0.7,类似地,5.1.1升级到5.1.7,一般来说没什么破坏性,也能比较好的解决问题。
那如果你无法升级版本,解决其依赖bundler版本的问题…那么你就需要使用特定版本的bundler,好在这条路也是行得通的。
gem install bundler -v 1.17.2
bundle _1.17.2_ exec rspec
在 bundle 后面加上 _version_
,就可以使用特定版本的bundler了。
同样的一点就是,如果安装了多个版本的 rails 版本,想用某个特定的版本来执行 rails new,那么类似的可以这么做:
rails _5.2.8_ new