我正在升级Rails 2到Rails 3应用程序(代码不是我写的).
(经过良好测试的代码)使用了shoulda和Test :: Unit,并广泛使用了宏__create和should_change.
(经过良好测试的代码)使用了shoulda和Test :: Unit,并广泛使用了宏__create和should_change.
据了解,从this discussion开始,应该保持这种方法,但是使用Test :: Unit的人并不需要(不知道我是否掌握了整个讨论).
Anaway,有没有办法选择性地转换指定宏的弃用警告?我从this posting已经知道可以通过设置以下方式关闭耙测试输出中的废弃警告:
ActiveSupport::Deprecation.silenced = true
在你的测试环境文件中,我也知道你可以把特定的代码片段放在一个块中,让它们沉默:
ActiveSupport::Deprecation.silence do # no warnings for any use of deprecated methods here end
后者是一个选项,但是需要我遍历所有的测试,并将这个应用程序宏包含在这样一个块中.所以我想知道有没有办法消除特定宏的警告完全与一个配置设置?
解决方法
旧问题 – 但如果您有新的折旧,您可以选择性地忽略:
ActiveSupport::Deprecation.behavior = lambda do |msg,stack| unless /LIBRARY_NAME/ =~ msg ActiveSupport::Deprecation::DEFAULT_BEHAVIORS[:stderr].call(msg,stack) # whichever handlers you want - this is the default end end