Подавить особое предупреждение в Ruby - PullRequest
7 голосов
/ 31 июля 2011

Я видел множество постов с флажком -W0 в качестве ответа на этот вопрос, но я не хочу подавлять все предупреждения, только предупреждения определенного значения.

На Ruby 1.8.7 я запускаю не-рельсовое приложение (которое использует ActiveRecord, несмотря на это). Я хочу сохранить все предупреждения, за исключением следующего ПРЕДУПРЕЖДЕНИЯ О УСТРАНЕНИИ:

Object#id will be deprecated; use Object#object_id

Если это невозможно, я бы хотел отказаться от всех предупреждений об устаревании. Java, по крайней мере, позволяет вам это делать. Как насчет Руби?

Обновление: я проголосовал за оба ответа, но проверил тот, который последующие поисковики ожидают найти здесь.

Ответы [ 2 ]

10 голосов
/ 31 июля 2011

Если есть определенный раздел кода, который генерирует предупреждения, вы можете попробовать смешать в модуле ядра из ActiveSupport и обернуть его блоком silence_warnings (пример извлекается прямо из RDoc):

silence_warnings do
  value = do_something_that_causes_warning # no warning voiced
end

noisy_call # warning voiced

Обязательно ли это подавлять?Не то, чтобы вы что-то компилировали и вам приходилось просеивать кучу предупреждений одновременно ...

3 голосов
/ 01 августа 2011

Редактировать: Если вы используете read_attribute(:id), то вам следует избегать обработки. Спасибо, Джереми!

Я не являюсь разработчиком Rails, но разве нет метода, позволяющего вам сказать: «Я хочу поле базы данных id, а не id метод объекта»?

...