Bundler:有没有办法设置版本?

时间:2020-04-07 15:42:28

标签: ruby-on-rails bundler

当尝试运行“捆绑安装”时,我收到此消息:

Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    rails (= 5.0.2) was resolved to 5.0.2, which depends on
      bundler (>= 1.3.0, < 2.0)
  Current Bundler version:
    bundler (2.1.2)
This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?
Could not find gem 'bundler (>= 1.3.0, < 2.0)', which is required by gem 'rails (= 5.0.2)', in any of the sources.
Bundler could not find compatible versions for gem "pg":
  In Gemfile:
    pg (= 0.18.3)
    jsonb_accessor (~> 1.0.0) was resolved to 1.0.0, which depends on
      pg (>= 0.18.1)

然后,我想我需要更改捆绑程序版本,为什么是2.1.2,我想更改为1.17.3。

gem list命令说:

bundler (default 1.17.3)

但是bundle -v命令说:

Bundler version 2.1.2

我在RVM中使用ruby 2.5.1。

您知道怎么做吗?

我了解到我可以使用bundle config set,但是它什么也没做。

2 个答案:

答案 0 :(得分:1)

Bundler安装了一个二进制文件,该文件在读取Gemfile之前会被调用,因此您需要删除正在使用的版本并安装所需的版本。

您可以通过以下方法使用RVM进行此操作:

rvm @global do gem uninstall bundler -a -x -I || true
gem install bundler -v '= 1.17.3'

如果您在项目之间进行跳转,则可能必须执行很多操作,或者可以执行以下操作:

gem install bundler -v '= 1.17.3'

而不是使用bundle install,请使用:

bundle _1.17.3_ install

指定要使用的捆绑器gem的版本。

我建议您考虑升级Rails,不仅要获得受支持的版本(具有安全更新),而且还允许您再次升级bundler

答案 1 :(得分:1)

您需要手动删除有问题的红宝石版本上的目录:例如,如果2.5.1红宝石版本存在捆绑程序问题,请转到以下路径:

/Users/YOUR_USER/.rvm/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems /

并删除捆绑程序目录。

如果捆绑程序是默认规范,则还需要在此路径上删除捆绑程序相关文件:

/Users/YOUR_USER/.rvm/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/specifications/default

然后,您可以使用@Unixmonkey答案重新安装特定版本的捆绑器