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