【问题标题】:How to see the dependency tree just from Gemfile?如何仅从 Gemfile 中查看依赖关系树?
【发布时间】:2013-10-03 17:52:23
【问题描述】:

我在执行bundle install时遇到以下错误

Make sure that `gem install couchbase -v '1.3.3'` succeeds before bundling.

现在,我没有将这个 gem 包含在 Gemfile 中,所以它来自一些依赖项。我如何确定哪个 gem 依赖于这个 couchbase gem?

由于bundle install 失败,我没有Gemfile.lock 来找出这种依赖关系。

【问题讨论】:

    标签: ruby gem bundler


    【解决方案1】:

    gem dependency(没有参数)应该显示当前 Gemfile 中的所有 gem 及其依赖项。

    编辑:

    如果您想找出哪些宝石使用特定(或全部)宝石,您也可以使用gem dependency -R(或只使用dep 而不是dependency)。

    对于更深层次的依赖关系,我会解析第一个 gem 依赖项的输出(可能是正则表达式?),选择 gem 的名称并在每个依赖项上调用 gem dep,但这只是一个松散的想法。

    【讨论】:

    • 谢谢。这回答了我的问题。奇怪但“gem 依赖”表明没有 gem 依赖于“couchbase”。知道为什么 bundle install 会尝试安装它,即使所有 gem 都不依赖它?
    • 坦率地说,我不知道,如果您尝试手动安装该 gem 会发生什么?另外,您可以发布您的 Gemfile 吗?
    • @MohitVerma 你为什么不看看你当地的Gemfile.lock
    • gem dependency 与您当前的Gemfile 无关。它只是查看系统上已安装的 gem。
    • bundle exec gem dependency 将使用Gemfile gems。
    【解决方案2】:

    您也可以使用bundler 创建依赖图。

    安装graphviz:

    gem install ruby-graphviz
    

    然后:

    bundle viz
    

    下面是一个新创建的 Rails 应用示例:

    您还可以使用选项:

    bundle help viz 
    

    【讨论】:

    • 如果你没有 Graphviz 但你有 Homebrew,你可以brew install graphviz
    • bundle viz -vR 将使用 gem 版本和所需的依赖版本创建依赖图
    • 很好,但是生成的 png 文件很难读取。人们不得不猜测那里写的是什么。
    猜你喜欢
    • 2018-04-13
    • 2018-10-08
    • 2014-10-20
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2016-06-08
    • 2015-12-27
    • 2021-05-05
    相关资源
    最近更新 更多