我正在将一个相当大的应用程序从Rails 3.0升级到3.2,并试图摆脱所有弃用警告。我的问题不是解决特定警告的更改,而是如何使Rails像对待异常一样对待它们,以便在开发人员模式下转储堆栈跟踪,因此我将拥有完整的堆栈跟踪以查看有问题的代码在哪里来自(哪里。这样,我就可以使用测试套件来查找所有内容,并验证是否已全部清除。如果有一种方法可以使rspec记录弃用警告而使测试失败,那么也可以。
(以防万一,我没有完全升级到Rails 4.0的原因是该应用程序依赖于AFAIK尚未完全适应Rails 4的某些特性,尤其是activerecord-oracle_enhanced-adapter。)
最佳答案
弃用警告由ActiveSupport::Deprecation处理,当某些代码想要显示此类警告时,它将调用
ActiveSupport::Deprecation.warn("some message")
没有引发任何错误。要回答您的问题,恐怕您必须使用深色的猴子修补工具:)无论如何,解决方案是临时使用的,以后将被删除。
更新:
OP在评论中指出了一种快速而合法的方法,因此猴子修补不再是一种选择。
这是他的代码:
# config/environments/test.rb
ActiveSupport::Deprecation.debug = true
关于ruby-on-rails - 当遇到过时警告时,如何配置Rails引发错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18923478/