Hegwin.Me

无边落木萧萧下,不尽长江滚滚来。

运行特定版本的 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
< Back