从Rails 3.0.9升级到3.1.0时,bundler ruby​​进程在Mac上占用99%的CPU

时间:2011-11-07 20:18:58

标签: ruby-on-rails-3.1 bundler

我现在已经尝试过几次了。我使用rvm和我正在使用的ruby是1.8.7。更改我的Gemfile后运行“bundle update”会使处理器挂起几乎100%的CPU。它已经运行了一个多小时。我需要做些什么特别的事吗?

1 个答案:

答案 0 :(得分:6)

我想出了如何调试它,从而能够解决我的问题。

简短版本(基于我对Bundler的公认的肤浅知识):

  • bundle updatebundle install都会查看您的Gemfile,然后尝试解析指定gem的依赖项。这是导致CPU刻录的步骤,最有可能(它应该在打印Fetching source index for http://rubygems.org/之后)

我遇到的是,有时Bundler会陷入无限循环(或者,至少比我等待的时间更长),试图解决冲突的要求。就我而言,两个不同的宝石都需要第三个不同版本要求的宝石。

由于某种原因,bundler陷入无休止的循环(或者在一些非常非常长的循环中),试图解决依赖关系。

我基本上在github上发现了这个问题:https://github.com/carlhuda/bundler/issues/1450

让我尝试了这个命令:

DEBUG_RESOLVER=1 bundle install

运行它为我产生了足够的输出来识别令Bundler混淆的gem依赖。在我的例子中,它是两个不同的宝石,需要不同版本的构建器宝石。

我通过指定适用于两个gems的构建器版本来修复它:

gem 'builder', '~> 3.0.0'

将其整理出来,下次我运行安装或更新时,它会在合理的时间内完成。

我希望这可以帮助您找出问题所在。