如何抑制弃用警告?

时间:2019-06-18 12:31:35

标签: ruby deprecation-warning

(这与this问题有关)。

在我没有时间更新代码之前,如何在Ruby中禁止过时警告?示例:以下命令将生成不推荐使用触发器警告(该命令本身是胡说;我只想提供一个语法上正确的最小示例):

 ruby -v -e '0 if /a/.../b/'

我已经尝试过

ruby -e '$VERBOSE=nil;0 if /a/.../b/'

,并且在安装 warning gem之后,

 ruby -e 'require "warning";; Warning.ignore(/deprecated/) 0 if /a/.../b/'

,但警告仍会打印到stderr。我不想将整个stderr重定向到bit bucket,因为我不想丢失重要消息。

3 个答案:

答案 0 :(得分:5)

警告是由解析器在评估代码之前生成的。其中包括您的Warning.ignore代码,因此在发生警告时该配置尚未就绪。

您可以将该代码移到单独的文件中:

# warn.rb
require 'warning'
Warning.ignore(/deprecated/)

并通过-r加载:

$ ruby -r./warn.rb -e '0 if /a/.../b/'

答案 1 :(得分:3)

不再使用触发器。

回答实际问题:ruby -W:no-deprecated

答案 2 :(得分:2)

我认为是:

ruby -W0 -e 'code'