2012-07-16 63 views
1

如何知道当我安装另一个gem时为什么要安装特定的gem?如何判断哪个gem导致对另一个(卸载的)gem的依赖?

也就是说,有没有一种简单的方法来找出依赖关系来自哪里?宝石安装失败,所以宝石依赖不起作用,因为它只处理已安装的宝石。这就是为什么我想追踪依赖关系,它打破了安装,似乎不应该是必要的。

有没有一种工具可以帮助跟踪尚未安装的宝石之间的依赖关系?也许一个打印依赖树的秘密bundlerswitch?

UPDATE他们刚发布了一个消除问题的twitter-bootstrap-rails新版本。不过,如果有一种方法可以跟踪卸载的gem的依赖关系图,那将会很有用。

这里是一个失败的命令,使用JRuby

gem install twitter-bootstrap-rails 

在Windows上运行不知怎的,这将导致旧版本的libv8宝石被安装,然后安装失败。 twitter-bootstrap-rails在它的gem_spec中没有列出libv8,只有依赖于其他人和其他人的therubyrhino和less-rails ...有人最终依赖于旧版本的libv8(v3.3.10.4)。问题是哪个gem导致对libv8的依赖?

这是我的环境。

RubyGems Environment: 
    - RUBYGEMS VERSION: 1.8.15 
    - RUBY VERSION: 1.9.2 (2012-02-22 patchlevel 312) [java] 
    - INSTALLATION DIRECTORY: c:/jruby-1.6.7/lib/ruby/gems/1.8 
    - RUBY EXECUTABLE: c:/jruby-1.6.7/bin/jruby.exe 
    - EXECUTABLE DIRECTORY: c:/jruby-1.6.7/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - universal-java-1.7 
    - GEM PATHS: 
    - c:/jruby-1.6.7/lib/ruby/gems/1.8 
    - c:/Users/alex/.gem/jruby/1.9 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - "install" => "--no-rdoc --no-ri --env-shebang" 
    - "update" => "--no-rdoc --no-ri --env-shebang" 
    - REMOTE SOURCES: 
    - http://rubygems.org/ 
+1

我放弃了试图让'twitter-bootstrap-rails'与JRuby合作。我切换到'anjlab-bootstrap-rails',它不需要任何本地东西。 – arkadiy 2012-07-17 01:04:28

+0

谢谢arbadj。看起来像解决了这个问题,并且是SASS口味的启动:-) – 2012-07-17 04:17:54

+0

这并不完全回答这个问题,但它看起来像gem命令有一个(无证件?)--verbose开关。没有帮助,但可能对其他问题有用。 – 2012-07-17 14:45:46

回答

1

如果你能MRI下安装它,您可以使用gemviz显示依赖关系图如下:

gemviz twitter-bootstrap-rails 

它应该能够做到这一点与未安装的宝石(有有做一个这样的网站),但gemviz不能这样做。

编辑:这里的依赖关系图:

twitter-bootstrap-rails gem dependency graph

所以therubyracer取决于libv8。很多依赖关系..

+0

gemviz听起来不错,但不幸的是并没有解决这个问题。我在抓22。如果我可以安装gem,我不需要追查是什么导致依赖。 – 2012-07-17 01:42:49

+0

您是否尝试过使用'gem install --verbose'? – robinst 2012-07-17 08:42:01

+1

是的,它没有帮助 – 2012-07-17 18:11:21

相关问题