我升级了一些宝石。当我调用bundle
时,我有这个:
Your bundle requires gems that depend on each other, creating an
infinite loop. Please remove gem 'abc' and try again.
我已删除,但此错误仍然存在。
答案 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
文件的副本才能使用,以防您已将其删除!
这可能现在已经很晚了,但值得尝试一下那些做过上述事情然后仍面临同样问题的人。
我的解决方案是:
Gemfile.lock
文件(可能从之前的版本中获取)并删除属于彼此依赖的其中一个宝石的块。bundle install
Gemfile.lock
中属于另一个宝石的块。bundle update --source gem_name_here
更新两个宝石。现在,让应用程序在bundle install
之前运行,如果这不起作用,请在运行应用程序之前尝试bundle install
。答案 2 :(得分:1)
对于寻求该问题答案的其他任何人,请在文本编辑器中打开您的Gemfile并确保您没有:
A)将相同的宝石列出两次或
B)列出了一颗宝石的多个来源。
就我而言,自从将宝石添加到rubygems.org以来,Gemfile尚未更新,因此也试图从rubygems和列出的git来源中提取宝石。删除git源解决了这个问题。