如何配置Rails在遇到弃用警告时引发错误?

时间:2013-09-20 18:28:05

标签: ruby-on-rails ruby-on-rails-3 rspec deprecated

我正在将一个相当大的应用程序从Rails 3.0升级到3.2,并试图摆脱所有弃用警告。我的问题不是要改变什么来解决特定的警告,而是如何让Rails像异常一样对待它们,这样它就会在开发模式下转储堆栈跟踪,所以我将拥有完整的堆栈跟踪来查看违规代码的位置来自(哪里。这样我就可以使用我的测试套件找到它们,并验证它们都已清理干净。如果有一种方法可以让rspec在测试时失败,如果它记录了一个弃用警告,那也可以。

(如果有人想知道,我没有一直升级到rails 4.0的原因是该应用依赖于AFAIK还没有为rails 4做好充分准备的一些宝石,尤其是activerecord-oracle_enhanced-adapter。)

2 个答案:

答案 0 :(得分:26)

在Rails 4中,您可以使用

进行配置
config.active_support.deprecation = :raise

test.rbdevelopment.rb文件中。

其他可用的方法可以在ActiveSupport::Deprecation::Behaviour

中找到

答案 1 :(得分:10)

弃用警告由ActiveSupport :: Deprecation处理,当某些代码想要显示此类警告时,它会调用

ActiveSupport::Deprecation.warn("some message")

没有抛出任何错误。 要回答你的问题,我担心你必须使用黑暗的猴子补丁工具:)无论如何,解决方案是临时使用,稍后会删除。

更新

OP在评论中指出了一种快速而合法的方法,因此猴子修补不再是一种选择。

这是他的代码:

# config/environments/test.rb
ActiveSupport::Deprecation.debug = true