find_spec_for_exe':找不到gem bundler(> = 0.a)(Gem :: GemNotFoundException)

Alv*_*aro 196 ruby bundle rubygems jekyll

我用过sudo bundle install,这可能是问题的原因?

我现在有:

  • gem -v 2.6.14
  • ruby -v ruby 2.3.5p376(2017-09-14修订版59905)[x86_64-darwin15]
  • jekyll -v jekyll 3.6.2
  • bundle -vBundler版本1.16.0.pre.3

我试图运行bundle exec jekyll serve或只是遇到以下错误jekyll serve

/Users/myusername/.rvm/rubies/ruby-2.3.5/lib/ruby/site_ruby/2.3.0/rubygems.rb:271:in cd my_pathactivate_bin_path'from /Users/myusername/.rvm/gems/ruby-2.3. 5/bin/bundle:23:in sudo bundle installeval'from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks :15: in`

此外,当访问我有我的博客的文件夹时,gem -v我收到以下消息:

VM使用你的Gemfile来选择Ruby,它很好 - Heroku也这样做,你可以用'rvm rvmrc warning ignore/Library/WebServer/Documents/blog/Gemfile'忽略这些警告.要忽略所有文件的警告,请运行'rvm rvmrc warning ignore allGemfiles'.未知的ruby解释器版本(不知道如何处理):RUBY_VERSION.

我不知道如何解决这个问题.我只是想创建我的静态博客,说实话,我不知道Ruby,Gem或Bundle :)所以我很感激一些见解!

Ant*_*dor 333

在我的情况下的问题是该Gemfile.lock文件有一个BUNDLED_WITH版本1.16.1gem install bundler已安装的版本2.0.1,因此在查找文件夹时存在版本不匹配

gem install bundler -v 1.16.1 固定它

当然,您也可以使用上一版本更改自己Gemfile.lock的版本并使用最近的软件,如Sam3000所示BUNDLED_WITHbundler

  • 作为替代方案,您可能希望将`BUNDLED_WITH`版本更改为最新版本的bundler.这对我有用,也救了我需要过时的软件:) (13认同)
  • Bundler 2刚刚发布,所以如果你没有在你的Dockerfile中指定如上,你将会遇到这个错误https://bundler.io/blog/2019/01/03/announcing-bundler-2.html (4认同)

小智 121

gem update --system
Run Code Online (Sandbox Code Playgroud)

将更新rubygems并将解决问题.

  • 只是为了澄清 - 正如@noraj指出的那样 - 问题是在新版本的bundler中引入的.如果您点击链接,解决方案是更新RubyGems. (3认同)

Nik*_*Kov 65

我只是为了让某人像我一样陷入困境而写作.

gem install bundler 表明每个人都安装得很好.

gem update --system
bundle install
Run Code Online (Sandbox Code Playgroud)

当我t tiped bundle有一个错误:

Fetching: bundler-1.16.0.gem (100%)
Successfully installed bundler-1.16.0
Parsing documentation for bundler-1.16.0
Installing ri documentation for bundler-1.16.0
Done installing documentation for bundler after 7 seconds
1 gem installed
Run Code Online (Sandbox Code Playgroud)

在文件夹/Users/nikkov/.rvm/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/中没有bundler-1.16.0文件夹.

修好sudo gem install bundler

  • 在"修复"它之后,请确保修复.rvm和.gem上的目录权限 (6认同)
  • sudo gem install是一个坏习惯,通常情况下,所有sem安装都应该在没有sudo的情况下进行 (4认同)

nor*_*raj 32

如果你因为Bundler需要RubyGems v3.0.0而尝试安装bundler 2.0.1或2.0.0,那么真正的答案就在这里

昨天我发布了Bundler 2.0,它引入了许多重大变化.其中一个变化是将Bundler设置为需要RubyGems v3.0.0.在发布之后,很明显我们的许多用户遇到了Bundler 2的问题,需要一个真正新版本的RubyGems.

我们一直在密切关注用户的反馈,并决定至少将RubyGems要求放宽到v2.5.0.我们发布了一个新的Bundler版本v2.0.1,可以调整此要求.

有关详细信息,请参阅:https://bundler.io/blog/2019/01/04/an-update-on-the-bundler-2-release.html

  • 所以:`gem update --system`然后`bundle install` (16认同)

小智 25

这解决了它:

  1. 删除Gemfile.lock rm Gemfile.lock
  2. 又跑bundle install

  • 对于现有的生产项目,这是一个可怕的想法。您最终将安装一堆未经测试的(与您的系统一起)新代码。 (4认同)

Mat*_*nes 18

原因是你当前的ruby环境,你有一个版本的不同版本的bundler Gemfile.lock.

  • 安全的方式,安装相同版本的捆绑器,Gemfile.lock如果发生了一些无法解决的事情,这不会破坏任何东西.
  • 很难,只需删除Gemfile.lock,然后运行bundle install.

  • 感谢那。绝对每个人都应该使用* safe *版本,以免使新的* unested *宝石破坏环境。要安装具有特定版本(例如1.17)的捆绑器,请使用`gem install bundler -v 1.17`。 (2认同)

Waw*_*Loo 12

如果您更改了正在使用的ruby版本rvm use,请删除Gemfile.lock并重试.


小智 9

安装与您的Gemfile.lock使用相匹配的捆绑器:

gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"
Run Code Online (Sandbox Code Playgroud)


Geo*_*öck 5

打开 Gemfile.lock,它位于您的应用程序文件夹的根目录中。滚动到文件末尾并查看使用的捆绑程序版本。然后确保安装使用的捆绑程序版本:

gem install bundler -v x.xx.xx
Run Code Online (Sandbox Code Playgroud)

或者 - 如果您安装了更高版本的 bundler,请删除 Gemfile.lock 和 bundle。

选择权在你,我的朋友。

  • 我不建议删除 Gemfile.lock ,因为这也会更新所有 gem。这可能会导致巨大的问题。 (3认同)

use*_*769 5

添加到许多答案中,我的问题源于想要使用 docker 的 ruby​​ 作为基础,然后在上面使用 rbenv 。这搞砸了很多事情。

在这种情况下我通过以下方式修复了它:

  • Gemfile.lock 版本确实需要更新 - 将“BUNDLED WITH”更改为最新版本确实一度更改了错误消息,因此可能需要更新
  • 在 .bash_profile 或 .bashrc 中,取消设置环境变量:
unset GEM_HOME
unset BUNDLE_PATH
Run Code Online (Sandbox Code Playgroud)

之后,rbenv 工作正常。不知道这些环境变量是如何首先加载的......