如何判断哪个gem导致对另一个(未安装的)gem的依赖?

时间:2012-07-16 20:49:41

标签: ruby rubygems jruby

当我安装另一个gem时,如何知道为什么安装了特定的gem?

也就是说,是否有一种简单的方法可以找出依赖的来源? gem安装失败,因此gem依赖不起作用,因为它只处理已安装的gem。这就是为什么我想要追踪依赖性,它打破了安装,似乎不应该是必要的。

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

UPDATE 他们刚刚发布了新版本的twitter-bootstrap-rails,可以解决问题。尽管如此,如果有一种方法可以跟踪未安装的宝石的依赖图,那将会非常有用。

这是失败的命令,在Windows上运行JRuby

gem install twitter-bootstrap-rails

不知何故,这会导致安装旧版本的libv8 gem,然后无法安装。 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 个答案:

答案 0 :(得分:1)

如果您可以在MRI下安装它,您可以使用gemviz来显示依赖图,如下所示:

gemviz twitter-bootstrap-rails

应该可以使用未安装的宝石(必须有一个网站来执行此操作),但gemviz不能这样做。

编辑:以下是依赖关系图:

twitter-bootstrap-rails gem dependency graph

所以 therubyracer 取决于 libv8 。那里有很多依赖..