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.lock
和gem 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 有啥区别