首页 > 解决方案 > 如何抑制弃用警告?

问题描述

(这与这个问题有关)。

在找到时间更新代码之前,如何抑制 Ruby 中的弃用警告?示例:以下命令将生成触发器已弃用警告(命令本身是无意义的;我只是想提供一个最小的、语法正确的示例):

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

我已经试过了

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

并且,在安装了警告gem 之后,

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

但警告仍会打印到标准错误。我不想将整个 stderr 重定向到位桶,因为我不想丢失重要消息。

标签: rubydeprecation-warning

解决方案


在评估代码之前,解析器会生成警告。这包括您的Warning.ignore代码,因此当警告发生时配置尚未准备好。

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

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

并通过以下方式加载-r

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

推荐阅读