Rails:Gemfile.lock 需要“找不到捆绑程序”(2.2.11)。 (Gem::GemNotFoundException)

Posted

技术标签:

【中文标题】Rails:Gemfile.lock 需要“找不到捆绑程序”(2.2.11)。 (Gem::GemNotFoundException)【英文标题】:Rails: "Could not find bundler" (2.2.11) required by Gemfile.lock. (Gem::GemNotFoundException) 【发布时间】:2011-09-04 04:43:41 【问题描述】:

当我尝试执行 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。

【问题讨论】:

0 反对票 这表示您没有安装捆绑程序。如果您执行“gem list b”,您会看到 bundler 吗? 【参考方案1】:

我遇到了这个问题,然后我做到了:

gem install bundler

然后在您的项目文件夹中执行:

bundle install

然后您可以使用以下命令运行您的项目:

bundle exec rails server

【讨论】:

gem install bundle -- 这也为我做了。 请注意,“bundle”gem 只是一个将“bundle”声明为依赖项的 gem,它基本上可以修复您的拼写错误。 github.com/will/bundle/blob/…【参考方案2】:

以防万一,我在使用 bundler 2.1.2 时遇到了类似的错误,并通过以下方式解决了它:

sudo gem install bundler -v 1.17.3

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

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

最新的捆绑器版本可能会覆盖稳定的捆绑器 -v 1.17.3。 从系统中删除最新的捆绑器并不容易,这对我有帮助:

gem env gempath 删除默认版本:https://***.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"

【讨论】:

【参考方案3】:

在我的机器上设置新的 Bundler 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'

我是这样实现的

首先,我已经安装了 Bundler gem 2.2.11 并将其设为默认 gem:

gem install --default bundler -v 2.2.11

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

gem list bundler

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

gem update --system

就是这样。

我希望这会有所帮助

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

如果您使用rbenv,运行rbenv rehash 可以解决此问题您安装了bundler 后仍然遇到问题。

【讨论】:

【参考方案6】:

对于在 Capistrano 中遇到此问题的任何人:capistrano 无法找到 bundler。原因可能是您在 Capistrano 根本看不到的其他 gemset 下安装了 bundler。

    列出您的宝石。

rvm 宝石列表

    使用特定的宝石。

rvm 使用'my_get_set'

    在该 gemset 下安装 bundler。

gem 安装捆绑器

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

【讨论】:

【参考方案7】:

如果您安装了捆绑器 gem,请确保您正在输入“捆绑”更新。

bundle update

如果您没有安装捆绑程序,请执行gem install bundler

【讨论】:

如果您创建一个新的应用程序位置 - rails new 并且如果您收到此错误? 做一个gem list bundler 看看它是否出现。如果没有,您需要按照我的答案中列出的方式安装它。 这发生在我使用 rvm 安装新版本的 ruby​​ 之后。然后我不得不再次运行gem install bundler 您可能还需要运行 bundle update --bundler(例如,从 bundler v1 升级到 v2)【参考方案8】:

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

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

重启完成后,运行:

sudo gem install bundler

【讨论】:

【参考方案9】:

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

rvmsudo gem install bundler

根据另一个问题:Could not find rails (>= 0) amongst [] (Gem::LoadError)

希望对你有所帮助, 干杯

【讨论】:

【参考方案10】:

根据answer这个类似的问题,应该够了:

rvmsudo gem install bundler.

干杯

【讨论】:

【参考方案11】:

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

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

rvm alias create default <rvm_registered_ruby>

修复它。

【讨论】:

【参考方案12】:

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

【讨论】:

【参考方案13】:

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

【讨论】:

【参考方案14】:

我遇到了同样的问题 .. 我的 bash 配置文件发生了一些问题,没有正确设置 RVM 内容。

确保您的 bash 配置文件包含以下行:

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

然后我运行“source ~/.bash_profile”并重新加载了我的 bash 配置文件中的所有内容。

这似乎为我解决了问题。

【讨论】:

谢谢。虽然我知道如何拼写“bundle”和“bundler”,但我完全忘记了我重新安装了 zsh,并且在这个过程中不小心把这条线从我的 .zshrc 中删除了。已经把我的头发拉了一段时间了:) 这个答案很旧,但对我来说一直是解决方案! 确保这是您的配置文件中的最后一行【参考方案15】:

我遇到了同样的问题。这对我有用:

    运行 rvm/script/rvm 并将其添加到您的 .profile 或 .bash_profile 中,如 https://rvm.io/rvm/install/ 所示

    使用不带 sudo 的包

【讨论】:

【参考方案16】:

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

【讨论】:

【参考方案17】:

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

要检查是否安装了捆绑器,请执行以下操作:gem list bundler 甚至which bundle,该命令将列出捆绑器版本或它的路径。如果未显示任何内容,请输入 gem install bundler 安装 bundler。

【讨论】:

以上是关于Rails:Gemfile.lock 需要“找不到捆绑程序”(2.2.11)。 (Gem::GemNotFoundException)的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 中的 Gemfile 和 Gemfile.lock 有啥区别

理解 Gemfile.lock:删除 Gemfile.lock 然后再次运行 bundle install 可以吗?

Bundler 找不到 gem 的兼容版本

jruby Bundler 找不到兼容的 json 版本

Gemfile.lock 包含合并冲突

git 和 Gemfile.lock 的问题