【问题标题】:Remove gem installed via Bundler from Git/Github从 Git/Github 中删除通过 Bundler 安装的 gem
【发布时间】:2014-03-01 09:16:53
【问题描述】:

在我的 Rails 应用程序中,我通过在我的 Gemfile 中指定 gem 'sdoc', github: 'voloko/sdoc' 安装了来自 Github 的 gem sdoc。一切都很好,直到我最近将 Bundler 更新到 v1.6.0.rc。

现在,当 Bundler 尝试加载 gem 时,我收到以下错误消息:

There was a LoadError while loading sdoc.gemspec: 
cannot infer basepath from
  /Users/manuel/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/bundler/gems/sdoc-1a0e80c2d629/sdoc.gemspec:2:in `require_relative'

Does it try to require a relative path? That's been removed in Ruby 1.9.

我已经解决了这个问题和submitted a pull request,但我无法摆脱“破碎”的宝石!

这是我尝试过的:

  • Gemfile 中删除 gem 或将其设置为其他版本
  • 删除Gemfile.lock
  • 删除gem文件夹/Users/manuel/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/bundler/gems/sdoc-1a0e80c2d629
  • gem uninstall sdoc(它甚至没有出现在gem list中)

没有任何帮助,之后我每次执行 bundle installbundle update 时,都会遇到同样的错误。

有什么提示吗?

【问题讨论】:

  • 删除Gemfile.lock 也无济于事,同样的错误。已将其添加到列表中...
  • 请带回Gemfile.lock,我建议编辑和删除对您要从有问题的项目中删除的 gem 的引用。
  • @dachi 你能详细说明一下吗?你想让我编辑Gemfile.lock 并删除所有对sdoc 的引用?
  • Gemfile 中删除并运行bundle install。如果不尝试查看 Gemfile.lock 我猜这是另一个 Gem 的依赖项。
  • 不,它不是另一个 gem 的依赖项,它在我的 Gemfile 中。删除它并运行bundle install 会产生同样的错误。

标签: ruby-on-rails git bundler rbenv


【解决方案1】:

首先:澄清一些事情

来自Bundler documentation

因为 Rubygems 缺乏处理来自 git 的 gem 的能力,所以从 git 存储库安装的任何 gem 都不会显示在 gem 列表中。但是,它们将在运行 Bundler.setup 后可用

另外,删除. . . /bundler/gems/ 目录中的gem 后,您还应该运行rbenv rehash。这应该会为您摆脱宝石。


答案:

转到项目的根目录(Gemfile 所在的位置)并运行bundle clean。您必须通过 --path--force 开关。这应该会删除通过 git 安装的 gem(通常如果您已经安装了这些 gem,并由 gem list 列出)。

如果您有问题。按照您已经尝试过的方式手动删除目录并运行rbenv rehash

【讨论】:

    【解决方案2】:

    如果我是你,我会降级 Bundler(即卸载 RC 版本并安装最新的稳定版)。

    【讨论】:

    • 是的,这可能是一种解决方法……知道如何卸载这些 gem 仍然会很有趣。 :)
    猜你喜欢
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 2019-01-07
    • 2011-04-14
    相关资源
    最近更新 更多