如果我更改 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
是否可以要求bundler安装新版本的bundler,而不是输入
gem install bundler
?
我想你可以直接跑
gem update bundler
,对吗?这对我有用。
从 Bundler 2.3 开始(至少与 RubyGems 3.3 结合),bundler 现在可以通过运行来完全升级自身
bundle update --bundler
这个命令已经存在很长时间了,但到目前为止它只将您的
Gemfile.lock
文件中的版本更新为系统上安装的最新版本。
现在,它可以完全升级您的应用程序以使用最新版本的 Bundler。
请注意,其他答案建议
gem install bundler
仅部分解决问题,因为如果您有一个 Gemfile.lock
文件锁定到某个旧版本并且它安装在您的系统上,即使您安装最新版本,该版本仍然会受到尊重全球范围内都有 gem install bundler
。
bundle update --bundler
才是正确的方法!
我发现当设置默认的 Bundler 版本时,
bundle update --bundler
效果不太好。这可能会导致运行时出现警告 bundle
。我知道上面的其他人提到过使用 gem
安装更高版本的捆绑器,因此在这里扩展这些答案。
您可以运行以下命令,但这可能会出现问题,因为它可能会破坏系统上的本地 gem,因为它们都已更新。
gem update --system
以下方法是确保 Bundler 更新的更安全方法
gem environment
cd <INSTALLATION DIRECTORY>/specifications/default
rm bundler-<old_default_version>.gemspec
gem install --default bundler -v <new_default_version>
gem install bundler:<new_default_version>
确保您的本地存储库使用正确的版本如果
gem install bundler
未升级您的捆绑程序版本,则运行 gem install bundler --pre
。
如果您只想使用捆绑安装,请将系统 gems 和默认捆绑程序版本更新为 2.4.22
gem update --system 2.4.22
当您安装了多个bundler gems时,通过bundler 2.4.22安装gems(bundler(2.4.22,2.3.3)并且默认不是您想要的)
bundle _2.4.22_ install
使用捆绑器 2.4.22 更新 Gemfile.lock
bundle _2.4.22_ update --bundler