如何跟踪与Bundler相关的DEPRECATION WARNING

时间:2011-11-14 17:57:59

标签: ruby-on-rails ruby

我是Rails的新手。当我启动我的应用程序时,我会不断看到这些弃用警告:

DEPRECATION WARNING: ref is deprecated and will be removed from Rails 3.2. 
(called from <top (required)> at D:/dev/AquaticKodiak/config/application.rb:12)
DEPRECATION WARNING: new is deprecated and will be removed from Rails 3.2. 
(called from <top (required)> at D:/dev/AquaticKodiak/config/application.rb:12)

好的,12号线上有什么?这个:

Bundler.require(:default, :assets, Rails.env)

嗯,这并没有真正缩小范围。这告诉我,与我的应用相关的其中一个宝石正在使用一个很快就会消失的关键字。我真想知道哪一个。我的gemfile中的所有gem都使用>= [version]语法,除了来自github的语法。我怀疑github的东西是造成这种情况的,但我怎么知道它是哪个项目?拉代码和搜索关键字看起来像是工作 - 有更简单的方法吗?

1 个答案:

答案 0 :(得分:4)

Rails弃用警告在这里非常无用。它有一个完整的callstack可以帮助你找到过时的gem,但是过滤结果以返回callstack中的第一个非框架点,在本例中是application.rb。

要找到有问题的gem,我会在ActiveSupport :: Deprecation.warn中获取完整的callstack,它在activesupport / lib / active_support / deprecation / reporting.rb的第10行定义。

如果安装了Pry(推荐),则在reporting.rb的第11行添加条件绑定:

binding.pry if message =~ /ref is deprecated/

然后检查来电者。

如果您发布了Gemfile,我可以帮您看一下。