如何抑制弃用警告?
How to suppress deprecation warnings?
(这与 this 问题有关)。
如何在找到时间更新代码之前抑制 Ruby 中的弃用警告?示例:以下命令将生成 flip-flop is deprecated 警告(命令本身是无意义的;我只是想提供一个最小的、语法正确的示例):
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 重定向到位桶,因为我不想丢失重要消息。
我认为是:
ruby -W0 -e 'code'
警告是在评估代码之前由解析器生成的。这包括您的 Warning.ignore
代码,因此在出现警告时配置尚未准备好。
您可以将该代码移至单独的文件中:
# warn.rb
require 'warning'
Warning.ignore(/deprecated/)
并通过-r
加载它:
$ ruby -r./warn.rb -e '0 if /a/.../b/'
触发器不再被弃用。
实际问题的答案:ruby -W:no-deprecated
(这与 this 问题有关)。
如何在找到时间更新代码之前抑制 Ruby 中的弃用警告?示例:以下命令将生成 flip-flop is deprecated 警告(命令本身是无意义的;我只是想提供一个最小的、语法正确的示例):
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 重定向到位桶,因为我不想丢失重要消息。
我认为是:
ruby -W0 -e 'code'
警告是在评估代码之前由解析器生成的。这包括您的 Warning.ignore
代码,因此在出现警告时配置尚未准备好。
您可以将该代码移至单独的文件中:
# warn.rb
require 'warning'
Warning.ignore(/deprecated/)
并通过-r
加载它:
$ ruby -r./warn.rb -e '0 if /a/.../b/'
触发器不再被弃用。
实际问题的答案:ruby -W:no-deprecated