ruby-on-rails – 如何跟踪与Bundler相关的DEPRECATION WARNING

我对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的东西是造成这种情况的,但我怎么知道它是哪个项目?拉代码搜索关键字看起来像是工作 – 有更简单的方法吗?

解决方法

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我可以看看你.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...