rubygems - "gem install"和 "bundle install"手动删除 gem 后不安装 gem 依赖项。如何通知 Rubygems gem 已被手动删除?

标签 rubygems

我试图在 XP 上构建 capybara-webkit。我关注了this操作说明。它说要进行捆绑安装:

 $ cd ruby193\capybara-webkit
 $ bundle install

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

请看一个例​​子。我为 capybara-webkit 执行了 bundle install ,它说所有的 gems 都存在:

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检查这些 gem ,它说它们都已被删除:

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只能通过gem uninstall命令删除,而不是手动删除。

有没有办法清除 Rubygems 缓存?如何通知 Rubygems 某些 gem 已被手动删除,以便 Rubygems 认为它​​们现在已卸载?

最佳答案

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

关于rubygems - "gem install"和 "bundle install"手动删除 gem 后不安装 gem 依赖项。如何通知 Rubygems gem 已被手动删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17474664/

相关文章:

ruby-on-rails - gem 'mongoid' , '~> 4' 是否等于 gem 'mongoid' , '>= 4' ?

ruby-on-rails-3 - 疯狂安装未定义的方法mass_assignment_sanitizer

css - 我如何创建一个 gem,它将从模板生成一个 css 文件

ruby-on-rails - MetaSearch Gem 使用轮胎 Gem 覆盖搜索方法

ruby - Ruby On Rails 中的 Elasticsearch 从 0.90 升级到 2.x

ruby - 消除 <head> 问题,我需要指导/帮助

mysql - Rails 本地服务器无法启动

ruby-on-rails - 无法使用 jRuby 安装 rails

Ruby - 无法调用 win32-api

ruby - 如何在 Ruby 中分析文本?