(Это связано с вопросом это).
Как я могу подавить предупреждения об устаревании в Ruby, пока не найду время обновить код? Пример: следующая команда сгенерирует предупреждение триггер устарел (сама команда бессмысленна, я просто хотел привести минимальный, синтаксически правильный пример):
ruby -v -e '0 if /a/.../b/'
я уже пробовал
ruby -e '$VERBOSE=nil;0 if /a/.../b/'
и, после установки драгоценного камня предупреждение,
ruby -e 'require "warning";; Warning.ignore(/deprecated/) 0 if /a/.../b/'
но предупреждение по-прежнему печатается в stderr. Я не хочу перенаправлять весь stderr в битовое ведро, потому что не хочу терять важные сообщения.
См. ссылку в моем сообщении, которая объясняет предысторию этой проблемы.
что ты имеешь в виду под "в битое ведро"? Это флуд логов или что?
2>/dev/null.
Почему бы вам просто не исправить код, использующий устаревший класс или метод? Вам все равно нужно будет сделать это в какой-то момент времени, если вы хотите иметь возможность запускать современные версии Ruby.
@spickermann: Это также тема вопроса, на который я ссылался. Я ищу решение, которое по крайней мере так же просто, как текущее. Также обратите внимание, что я написал выше пока не найду время обновить код. И я все еще надеюсь, что разработчики Ruby пересмотрят свое решение отказаться от этого элемента языка.

Я думаю что это :
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
Спасибо, что указали на это! Я не знал об этом, но теперь, когда вы это рассказываете, я нашел статью это на эту тему.
основываясь на комментарии к ответу ниже, я должен спросить, зачем вам это нужно?