Как подавить предупреждения об устаревании? - PullRequest
0 голосов
/ 18 июня 2019

(это связано с этим вопросом).

Как я могу подавить предупреждения об устаревании в 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. Я не хочу перенаправлять весь stderr в корзину битов, потому что я не хочу терять важные сообщения.

Ответы [ 2 ]

5 голосов
/ 18 июня 2019

Предупреждение генерируется синтаксическим анализатором до оценки кода. Это включает в себя ваш код Warning.ignore, поэтому конфигурация не готова, когда появляется предупреждение.

Вы можете переместить этот код в отдельный файл:

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

и загрузите его через -r:

$ ruby -r./warn.rb -e '0 if /a/.../b/'
2 голосов
/ 18 июня 2019

Я думаю, что это:

ruby -W0 -e 'code'
...