使用 bundler 安装更新版本的 bundler

Install newer version of bundler with bundler

如果我更改 Gemfile 中所需的捆绑程序版本,然后键入 bundle,我会得到

Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    bundler (>= 1.10.2) ruby

  Current Bundler version:
    bundler (1.9.9)
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.10.2) ruby in any of the sources

是否可以要求捆绑器安装新版本的捆绑器,而不是输入 gem install bundler

Seems like 捆绑器无法自行捆绑 :)

所以你必须 运行 gem install bundler.

我想你可以 运行 gem update bundler,对吧?它对我有用。

如果 gem install bundler 没有升级您的捆绑器版本,那么 运行 gem install bundler --pre.

从 v1.14 开始,现在有:bundle update --bundler

https://bundler.io/v2.0/man/bundle-update.1.html#OPTIONS

我发现 bundle update --bundler 在设置默认 Bundler 版本时效果不佳。当 运行ning bundle 时,这可能会导致警告。我知道上面的其他人已经提到使用 gem 安装更高版本的捆绑器,所以在这里扩展这些答案。

  1. 您可以 运行 以下内容,但这可能会出现问题,因为它可能会破坏您系统上的本地 gem,因为所有这些都已更新.

    gem update --system
    
  2. 以下方法是确保更新 Bundler 的更安全的方法

  • 获取您的 gem 环境并记下 INSTALLATION_DIRECTORY
    gem environment
    
  • 然后运行以下
    cd <INSTALLATION DIRECTORY>/specifications/default
    rm bundler-<old_default_version>.gemspec
    gem install --default bundler -v <new_default_version>
    
  1. 如果您已经关注了 2,但还是不行,那么 运行
    gem install bundler:<new_default_version>
    
    确保您的本地存储库使用正确的版本

从 Bundler 2.3 开始(至少结合 RubyGems 3.3),bundler 现在可以通过 运行

完全升级
bundle update --bundler

这个命令已经存在很长时间了,但直到现在它只更新了您 Gemfile.lock 文件中的版本,使其成为您系统上安装的最新版本。

现在,它可以完全升级您的应用程序以使用最新版本的 Bundler。

请注意,其他建议 gem install bundler 的答案只能部分解决问题,因为如果您有一个 Gemfile.lock 文件锁定到某个旧版本并且它安装在您的系统上,该版本仍将是即使您使用 gem install bundler.

在全球范围内安装最新版本,也会受到尊重

bundle update --bundler是正确的方法!