13

我试图在 XP 上构建 capybara-webkit。我遵循了这个指示。它说要做bundle install

 $ cd ruby193\capybara-webkit
 $ bundle install

此命令安装了许多 gem。不幸的是,我无法构建 capybara-webkit,所以我手动删除了它安装的所有 gem。之后我遇到了问题gem install-bundle install这些命令认为已删除的 gem 已安装在我的计算机上,如果它们是我现在要安装的其他一些 gem 的依赖项,则不要安装它们。

请看一个例​​子。我这样做bundle installcapybara-webkit,它说所有的宝石都存在:

C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\capybara-webkit>bundle install
Resolving dependencies...
Using rake (0.9.2)
Using addressable (2.3.2)
Using bundler (1.3.5)
Using appraisal (0.4.0)
Using mime-types (1.22)
Using nokogiri (1.5.9)
Using rack (1.5.2)
Using rack-test (0.6.2)
Using xpath (2.0.0)
Using capybara (2.1.0)
Using json (1.8.0)
Using capybara-webkit (1.0.0) from source at .
Using ffi (1.2.0)
Using childprocess (0.3.6)
Using diff-lcs (1.1.2)
Using websocket (1.0.6)
Using libwebsocket (0.1.7.1)
Using subexec (0.0.4)
Using mini_magick (3.2.1)
Using multi_json (1.5.0)
Using rack-protection (1.3.2)
Using rspec-core (2.6.4)
Using rspec-expectations (2.6.0)
Using rspec-mocks (2.6.0)
Using rspec (2.6.0)
Using rubyzip (0.9.9)
Using selenium-webdriver (2.27.2)
Using tilt (1.3.3)
Using sinatra (1.3.5)
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

但现在我检查这些宝石,bundle show它说它们都已被删除:

C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\capybara-webkit>bundle show sinatra
The gem sinatra has been deleted. It was installed at:
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/sinatra-1.3.5

C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\capybara-webkit>bundle show selenium-webdriver
The gem selenium-webdriver has been deleted. It was installed at:
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.27.2

C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\capybara-webkit>bundle show mini_magick
The gem mini_magick has been deleted. It was installed at:
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mini_magick-3.2.1

看起来 Rubygems 不知何故记得 gem 已安装并认为它们仍然存在。似乎只能通过gem uninstall命令而不是手动删除 gem。

有没有办法清除 Rubygems 缓存?如何通知 Rubygems 一些 gem 已被手动删除,因此它现在应该将它们视为已卸载?

4

4 回答 4

26

手动删除 gem 后,删除“C:\Ruby187\lib\ruby\gems\1.8\specifications”中该 gem 的 gemspec 文件。然后尝试捆绑安装。

于 2013-07-05T06:25:12.517 回答
4

在我的情况下,我在一个目录中创建了一个 Gemfile 并正在执行捆绑安装,我碰巧在 os x 上手动删除了 gem,因此我无法再次安装 gem。

1. 宝石清单 | grep your_gem_name
 2.卸载your_gem_name
 3. 移除 Gemfile.lock
 4. 从我的 Gemfile 位置捆绑安装
于 2014-07-11T18:46:59.280 回答
4

我知道这个答案来得很晚,但是我自己也遇到了同样的问题,这对我有用;对于任何可能需要它的人。

如果要重新安装手动删除的任何 gem,则必须删除目录中对它的任何引用,$HOME/.rvm/gems/ruby-X/然后运行bundle install​​. 如果您手动删除了所有 gem,则删除$HOME/.rvm/gems/ruby-X/目录中的所有内容并运行bundle将重新安装它们。

于 2014-02-04T12:25:58.987 回答
1

跑:

bundle install --force

这将重新安装所有 gem,但保留版本。

于 2018-01-14T19:04:28.463 回答