我正在将一个相当大的应用程序从Rails 3.0升级到3.2,并试图摆脱所有弃用警告。我的问题不是要改变什么来解决特定的警告,而是如何让Rails像异常一样对待它们,这样它就会在开发模式下转储堆栈跟踪,所以我将拥有完整的堆栈跟踪来查看违规代码的位置来自(哪里。这样我就可以使用我的测试套件找到它们,并验证它们都已清理干净。如果有一种方法可以让rspec在测试时失败,如果它记录了一个弃用警告,那也可以。
(如果有人想知道,我没有一直升级到rails 4.0的原因是该应用依赖于AFAIK还没有为rails 4做好充分准备的一些宝石,尤其是activerecord-oracle_enhanced-adapter。)
答案 0 :(得分:26)
在Rails 4中,您可以使用
进行配置config.active_support.deprecation = :raise
在test.rb
或development.rb
文件中。
其他可用的方法可以在ActiveSupport::Deprecation::Behaviour
答案 1 :(得分:10)
弃用警告由ActiveSupport :: Deprecation处理,当某些代码想要显示此类警告时,它会调用
ActiveSupport::Deprecation.warn("some message")
没有抛出任何错误。 要回答你的问题,我担心你必须使用黑暗的猴子补丁工具:)无论如何,解决方案是临时使用,稍后会删除。
更新
OP在评论中指出了一种快速而合法的方法,因此猴子修补不再是一种选择。这是他的代码:
# config/environments/test.rb
ActiveSupport::Deprecation.debug = true