Rails: Gemfile.lock 需要的“ Could not find bundler”(2.2.11)

当我尝试执行 bundler update时,我得到这个错误:

.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in
`to_specs': Could not find bundler (>= 0) amongst
[rake-0.8.7, rake-0.8.7, rubygems-update-1.8.4] (Gem::LoadError)

我是 Ruby 的新手,谁能告诉我是什么导致了这一切? Rake 0.8.7已经安装好了。

120110 次浏览

命令是 bundle update(“ bundle”中没有“ r”)。

要检查是否安装了 bundler,请执行以下操作: gem list bundler或甚至 which bundle,命令将列出 bundler 版本或其路径。如果什么都没有显示,那么键入 gem install bundler安装 bundle。

如果已经安装了 bundler gem,请确保输入的是“ bundle”更新。

bundle update

If you don't have bundler installed, do gem install bundler.

我也有同样的问题,这对我很管用:

  1. 运行 rvm/script/rvm 并将其添加到. profile 或. bash _ profile,如 https://rvm.io/rvm/install/所示

  2. 使用 bundle 而不使用 sudo

I had this problem, then I did:

gem install bundler

然后在你的项目文件夹中做:

bundle install

然后你可以使用以下方法运行你的项目:

bundle exec rails server

我也有同样的问题. . 我的 bash 配置文件出了问题,没有正确地设置 RVM 的东西。

Make sure your bash profile has the following line:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"  # This loads RVM into a shell session.

然后我运行“ source ~/. bash _ profile”,它会重新加载 bash 配置文件中的所有内容。

这似乎解决了我的问题。

您可能必须首先执行“ rvm use 1.9.2”之类的操作,这样才能使用正确的 Ruby 和 gemset。您可以通过执行“ which ruby”来检查正在使用的 Ruby

升级到 Ruby 2.1.0后我得到了这个。我的 PATH在我的登录脚本中设置为包含 .gem/ruby/2.0.0/bin。更新版本号修复了它。

如果在另一个 bundle exec中运行该命令,则可能与 https://github.com/bundler/bundler-features/issues/34相关。如果是这种情况,请尝试使用 Bundler.with_original_env

在我的案例中,我相信我在系统中保留了一个旧的 Ruby,而没有在 rvm 上注册,即使路径变量和 gem 列表没有问题,它在 Capistrano 部署期间仍然会使用旧的 Ruby

然后我意识到,我用 rvm 安装的 Ruby 没有设置为默认的 Ruby

rvm alias create default <rvm_registered_ruby>

修好了。

根据这个 answer对一个类似的问题,它应该足够:

rvmsudo gem install bundler.

干杯

如果使用的是 rvm,请尝试以下命令:

rvmsudo gem install bundler

根据另一个问题: 在[](Gem: : LoadError)中找不到路径(> = 0)

希望能有帮助, 干杯

系统可能正在运行“ rootless”。尝试将固件 nvram 变量 boot-args 设置为“ rootless = 0”。 尝试运行一组命令:

sudo nvram boot-args="rootless=0";
sudo reboot

重启完成后,运行:

sudo gem install bundler

对于任何遇到 Capistrano 这个问题的人: Capistrano 无法定位 bundler。原因可能是你安装了一些其他 gemset下的捆绑包,Capistrano 甚至没有看。

  1. List your gemsets.

Rvm 宝石集列表

  1. Use a particular gemset.

rvm use 'my_get_set'

  1. 在那个宝石下面安装打包机。

Gem 安装包

然后,再次尝试执行部署任务。

如果你使用 rbenv运行 rbenv rehash可以解决这个 之后你已经安装了 bundler,仍然得到的问题。

为了以防万一,我在 bundler 2.1.2中遇到了类似的错误,并用以下方法解决了这个问题:

sudo gem install bundler -v 1.17.3

如果已经安装了多个 bundle 版本,那么可以以这种方式运行特定版本的 bundle: bundle _1.17.3_ exec rspec

虽然后来的捆绑包版本似乎有很多漏洞(在2个操作系统上的3个不同项目上都有问题) ,但是有一个旧的捆绑包可能是最好的,至少这是我在 Ubuntu 和 MacOS 上的版本

Latest bundler versions may override stable bundler -v 1.17.3. 从系统中删除最新的捆绑包并不容易,以下是帮助我的方法:

  • Remove default version from gem env gempath: https://stackoverflow.com/a/60550744/1751321
  • 从加载路径中删除 rm bundler.rb && rm -rf bundler文件夹: ruby -e 'puts $LOAD_PATH'
  • 然后重新安装稳定的 sudo gem install bundler -v 1.17.3

脚本 ruby fix_bundler.rb

require 'fileutils'


load_paths = `ruby -e 'puts $LOAD_PATH'`
load_paths.split.each do |path|
target = File.join path, "bundler.rb"
if File.exist?target
puts "Deleting #{target}"
File.delete target
end


target = File.join path, "bundler"
if File.directory? target
puts "Deleting #{target}"
FileUtils.rm_rf target
end
end


puts "✅ bundler fixed"

我通过删除 Gemfile.lockgem install bundler:2.2.0解决了这个问题

在我的机器上安装新的 邦德勒 gem 版本(2.2.11)时,我也有同样的担心。

我得到了下面的错误:

/home/username/.rbenv/versions/2.7.2/lib/ruby/2.7.0/rubygems.rb:277:in `find_spec_for_exe': Could not find 'bundler' (2.2.11) required by your /home/username/Projects/my_project/Gemfile.lock. (Gem::GemNotFoundException)
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:2.2.11`
17: from /home/username/.rbenv/versions/2.7.2/bin/rspec:23:in `<main>'
16: from /home/username/.rbenv/versions/2.7.2/bin/rspec:23:in `load'
15: from /home/username/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/rspec-core-3.10.1/exe/rspec:4:in `<top (required)>'
14: from /home/username/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/rspec-core-3.10.1/lib/rspec/core/runner.rb:45:in `invoke'

我是这样做到的:

首先,我已经安装了 邦德勒 gem 2.2.11,并将其设置为默认 gem:

gem install --default bundler -v 2.2.11

接下来,我列出了我的 Bundler 版本:

gem list bundler

最后,我更新了我的 gem,使用新安装的 Bundler:

gem update --system

仅此而已。

I hope this helps