在我的 Rails 应用程序中,我通过在 Gemfile 中指定
。一切都很好,直到我最近将 Bundler 更新到 v1.6.0.rc。gem 'sdoc', github: 'voloko/sdoc'
从 Github 安装了 gem sdoc
现在,当 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 ,但我无法摆脱“破损”的 gem !
这是我尝试过的:
- 从
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 install
或bundle update
之后,我都会收到相同的错误。
有什么提示吗?
最佳答案
首先:澄清一些事情
Because Rubygems lacks the ability to handle gems from git, any gems installed from a git repository will not show up in gem list. They will, however, be available after running Bundler.setup
此外,删除 内的 gem 后。 。 。/bundler/gems/
目录下,您还应该运行 rbenv rehash
。这应该会帮你去掉 gem 。
答案:
转到项目的根目录(Gemfile 所在的位置)并运行bundle clean
。您必须传递 --path
或 --force
开关。这应该会删除通过git安装的gem(通常如果您安装了这些gem并通过gem列表
列出)。
如果您有问题。正如您已经尝试过的那样,手动删除目录并运行 rbenv rehash
。
关于ruby-on-rails - 从 Git/Github 中删除通过 Bundler 安装的 gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22112423/