在运行bundle update
:
$ bundle update
NOTE: Gem::SourceIndex#all_gems is deprecated with no replacement. It will be removed on or after 2011-10-01.
Gem::SourceIndex#all_gems called from /Users/meltemi/.rvm/gems/ruby-1.9.2-p180@ppr3/gems/bundler-1.0.13/lib/bundler/rubygems_integration.rb:256
.
任何人都知道这意味着什么以及如何解决它?
注意:这是一个Rails 3.0.7环境
答案 0 :(得分:6)
当我升级到rubygems 1.8.0时,我在非Rails环境中获得了一堆我的宝石相同的错误。任何时候需要rubygems我都会收到警告。看看'网络,似乎它也可能是rubygems 1.7.x的问题,但我从未安装过其中一个版本,所以我不确定。我通过运行来解决这个问题:
gem pristine --all --no-extensions
我不得不运行它几次 - 它一直出错(但通常不会在运行之间的同一个地方)。最终它已经足够了,它已经解决了我的大部分宝石。
有一些宝石没有正确地重新生成他们的规格(json和续集,特别是在我的情况下)因为他们需要构建扩展。 (gem命令输出表明它正在跳过它们,虽然很容易在所有弃用警告中错过该消息。)对于那些宝石,我卸载它们然后再次重新安装它们(它们以前是由bundle在rubygems 1.5中安装的) .x)并修复了剩余的警告。可能我本来可以从那个攻击计划开始,但我没有尝试。
答案 1 :(得分:5)
它是从Bundler gem调用的。尝试更新bundler以查看它是否有帮助
sudo gem update bundler
答案 2 :(得分:1)
Pry gem直接使用rubygems API,但遗憾的是只运行gem pristine --all
无法修复。
我分叉了Pry gem并使用未弃用的API调用添加了修复程序。在合并到主人之前,这是分叉:https://github.com/dvdplm/pry
答案 3 :(得分:1)
我将bundler('gem update bundler')从1.0.12更新到1.0.15。现在一切都很好。
答案 4 :(得分:0)
Qoute:
据我所知,来源: 只需修补rubygems_integration.rb,第256行:
- Gem.source_index.all_gems.values
+ Gem.source_index.gems.values
原因:
Gem :: SourceIndex#all_gems刚刚返回@gems,现在有一个 @gems的attr_reader。我认为这是删除的原因 all_gems方法。
答案 5 :(得分:0)
我通过RVM删除并重新安装了ruby 1.9.2,然后卸载了所有宝石:
gem list --no-versions
将结果放在名为gems
的文件中(剪切错误消息)。然后做:
GEMS=`cat gems`
for x in $GEMS ; do gem uninstall $x -aIx; done
之后,我能够运行其他人建议的原始命令:
gem pristine --all --no-extensions
那时错误就消失了。
答案 6 :(得分:0)
Bundler 1.0.13 (2011年5月4日发布的版本)发出了这个恼人的弃用警告:
注意:不推荐使用Gem :: SourceIndex#all_gems。它将在2011-10-01之后删除。 Gem :: SourceIndex#all_gems来自/Users/me/.rvm/gems/ruby-1.9.2-p180@composer/gems/bundler-1.0.13/lib/bundler/rubygems_integration.rb:256
2011年5月11日在Bundler repo fix was committed提交的to correct an issue 2011年5月6日。
即将发布Bundler 1.1,您可以尝试这个解决方案:
$ gem uninstall bundler
$ gem install bundler --version = 1.0.12
我希望这会有所帮助。花了一些时间去寻找它。