Ruby Bundler在尝试更新或安装时将永远挂起
当尝试运行bundle安装或bundle更新时,bundler将永久挂起,并且不会完成其功能。它将完成的唯一时间是当我指定要更新的gem时 例如:Ruby Bundler在尝试更新或安装时将永远挂起,ruby,rubygems,bundler,Ruby,Rubygems,Bundler,当尝试运行bundle安装或bundle更新时,bundler将永久挂起,并且不会完成其功能。它将完成的唯一时间是当我指定要更新的gem时 例如: bundle update 除非我像这样使用它,否则它将永远挂起: bundle update activerecord 然后它会像平常一样完成 任何帮助都将不胜感激。此问题是由于缺少依赖关系,或者更糟糕的是依赖关系。当您不使用rubygems.org作为您的gems服务器(企业环境)时,这是很常见的 常见模式: 你没有安装那颗宝石 您没有安装
bundle update
除非我像这样使用它,否则它将永远挂起:
bundle update activerecord
然后它会像平常一样完成
任何帮助都将不胜感激。此问题是由于缺少依赖关系,或者更糟糕的是依赖关系。当您不使用rubygems.org作为您的gems服务器(企业环境)时,这是很常见的 常见模式:
- 你没有安装那颗宝石
- 您没有安装该gem的依赖项
- 如果没有依赖项,就无法安装gem
最简单的技巧 创建一个新的gemset,然后重新绑定。这多次解决了这个问题 如果由于生产原因,您不能这样做,并且您没有应用程序历史记录来反映添加问题gem的时间,那么:
简易技术 在写了这个答案之后,我学到了一些东西,我想我应该继续学习如何使用详细的调试输出运行bundler
export DEBUG_RESOLVER=1
bundle 2> debug_output.txt 1> stdio.txt &
这会将所有调试(err)输出转储到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安装
或bundle更新
调试您的私有Gemserver技术 我需要使用此消除过程方法来确定我的(企业)gemserver索引已损坏
bundle update
以确认空集有效捆绑更新
完成后 将
ENV
var与
取消调试解析程序
您也可以尝试使用--verbose
标志来获得更多的输出,但它实际上是过时的,没有多大帮助。从我所看到的情况来看,真正做到这一点的唯一方法是:
sudo bundle update --verbose
它一直挂在这里:
Query Gemcutter Dependency Endpoint API: tenderlove-frex
Fetching from: http://rubygems.org/api/v1/dependencies?gems=tenderlove-frex
HTTP Success
Query List: []
一点帮助都没有。我最终发现这是两个宝石之间的冲突。以下内容将永远挂起:
source 'http://rubygems.org'
gem 'rails', '~> 3'
gem 'airbrake'
我删除了rails版本:
source 'http://rubygems.org'
gem 'rails'
gem 'airbrake'
然后它工作了,但我在Gemfile.lock中注意到它使用的是Rails 2.3.X。所以airbrake似乎依赖于Rails 2,但我想要3。我找不到airbrake具有Rails 2.x依赖性的任何地方,所以不确定为什么会这样结束。为什么bundler不能输出更有意义的东西,这是我无法理解的
尽管如此,这还是奏效了:
source 'http://rubygems.org'
gem 'rails', '~> 3'
gem 'airbrake', '~> 3'
我真的认为Bundler有问题,但不确定 捆扎机可能未挂起。我刚刚经历了一个7分钟的时间来捆绑一个相对较小的Gemfile,这是在最快的SSD Macbook Pro上,具有50 Gb的下载连接。当部署到AWS实例上时,确保您的安全组允许出站HTTP和/或HTTPS连接-我遇到这个问题是因为我对安全组的限制太多。您运行的是什么环境(操作系统和Ruby版本)?你能得到bundle“bundle-v”的版本吗。您是否尝试过卸载和重新安装捆绑包?另外,您的文件看起来像什么?您可能还想尝试使用--verbose选项运行熟悉的声音。我同意有一个场景可以(可能)重复发生并重新创建。无论是bug还是糟糕的消息传递,我认为需要进行修复。谢谢你这么说。这里也发生了同样的事情D