你的捆绑包需要相互依赖的宝石,创造一个无限循环。请删除宝石

时间:2016-09-13 23:47:10

标签: ruby-on-rails ruby bundle

我升级了一些宝石。当我调用bundle时,我有这个:

Your bundle requires gems that depend on each other, creating an 
infinite loop. Please remove gem 'abc' and try again.

我已删除,但此错误仍然存​​在。

3 个答案:

答案 0 :(得分:3)

最好的办法是删除Gemfile.lock,然后运行bundle update

为什么这会起作用?有时您会强制加载旧版本的gem,并且需要加载该gem的新版本。

因此,删除Gemfile.lock将让bundle下载正确版本的gem。

如果这不起作用,你可能会强制加载一个gem的版本,比如gem "paperclip", "~> 4.2"与另一个gem有冲突,这种情况并不常见,但可能会发生。你将不得不找到问题的宝石,并删除版本,如gem "paperclip"或找到有冲突的其他宝石,并获得该宝石的正确版本。如果你使用git,你可以回过你的旧Gemfile.lock,看看你有什么版本的冲突宝石,并强制这些宝石的版本。我们希望删除你的Gemfile.lock有效。

答案 1 :(得分:1)

注意:在继续阅读本文之前,您需要一份Gemfile.lock文件的副本才能使用,以防您已将其删除!

这可能现在已经很晚了,但值得尝试一下那些做过上述事情然后仍面临同样问题的人。

我的解决方案是:

  1. 使用您拥有的Gemfile.lock文件(可能从之前的版本中获取)并删除属于彼此依赖的其中一个宝石的块。
  2. 运行bundle install
  3. 如果上述步骤不起作用,请重复(步骤1和2),但现在删除Gemfile.lock中属于另一个宝石的块。
  4. 如果以上内容不能完全运行,请尝试(步骤1)但不删除任何内容。然后按bundle update --source gem_name_here更新两个宝石。现在,让应用程序在bundle install之前运行,如果这不起作用,请在运行应用程序之前尝试bundle install

答案 2 :(得分:1)

对于寻求该问题答案的其他任何人,请在文本编辑器中打开您的Gemfile并确保您没有:

A)将相同的宝石列出两次或

B)列出了一颗宝石的多个来源。

就我而言,自从将宝石添加到rubygems.org以来,Gemfile尚未更新,因此也试图从rubygems和列出的git来源中提取宝石。删除git源解决了这个问题。