gpt4 book ai didi

ruby - Bundler,在尝试更新或安装时,将永远挂起

转载 作者:数据小太阳 更新时间:2023-10-29 06:37:29 25 4
gpt4 key购买 nike

尝试运行 bundle install 或 bundle update 时,bundler 将永远挂起,并且无法完成其功能。它唯一会完成的时间是当我指定要更新的 gem 时。

例如:

bundle update

除非我这样使用它,否则将永远挂起:

bundle update activerecord

然后它将正常完成。

如有任何帮助,我们将不胜感激。

最佳答案

这个问题是由于缺少依赖项,或者更糟的是依赖项中的依赖项。当您不使用 ruby​​gems.org 作为您的 gemserver(企业环境)时,这很常见。

常见模式:

  • 你没有安装那个 gem
  • 您没有安装该 gem 的依赖项
  • 你没有安装没有依赖项的 gem

最简单的技术

创建一个新的 gemset,并重新 bundle 。这多次解决了这个问题。

如果出于生产原因您不能这样做,并且您没有应用历史记录来反射(reflect)问题 gem 的添加时间,那么:


更简单的技术

自从写了这个答案后学到了一些东西,我想我会继续 this excellent article了解如何运行带有详细调试输出的 bundler

export DEBUG_RESOLVER=1
bundle 2> debug_output.txt 1> stdio.txt &

这会将所有调试(错误)输出转储到 debug_output.txt 并将正常屏幕内容转储到 stdio.txt

您还需要转储 1>,因为每次 bundler 将一行转储到 2(stderr) 时,它都会将 crlf 放入 1。因此,要么转储 1 要么将作业置于后台。我都这样做,所以我可以在同一个终端工作。

我通常会跟进:

tail stdio.txt 

为了确定事情已经开始,那么:

tail -n 10000 -f debug_output.txt 

使用 /FAIL] 在文件中搜索安装依赖项的失败尝试。找到其中几个相同的,您通常就找到了罪魁祸首。 stderr 适用于 bundle installbundle update


调试您的私有(private) Gemserver 技术

我需要使用这种消除过程方法来确定我的(企业)gemserver 索引已损坏

  1. 注释掉所有的 gem
  2. 运行bundle update以确认空集工作
  3. 取消评论一个 gem 和bundle update
  4. GOTO 3 直到你遇到问题
  5. 研究其依赖性

完成后

取消设置ENV var

unset DEBUG_RESOLVER

关于ruby - Bundler,在尝试更新或安装时,将永远挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9467756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com