Выборочное молчание предупреждений JRuby - PullRequest
2 голосов
/ 21 мая 2010

Я использую библиотеку ruby-mysql под JRuby и получаю следующие предупреждения:

/mysql/protocol.rb:530 warning: GC.disable does nothing on JRuby

Есть ли способ заставить JRuby перестать жаловаться на это?

Ответы [ 2 ]

6 голосов
/ 21 мая 2010

У вас есть пара вариантов.

Во-первых, вы можете запустить вашу программу с опцией -W0, которая отключит все предупреждения. Это, вероятно, не то, что вы хотите.

Однако применение -W0 аналогично установке $VERBOSE в nil - так что мы можем просто сделать это вокруг кода, где мы хотим подавить предупреждения. Это второй и гораздо более предпочтительный вариант.

def suppress_all_warnings
  old_verbose = $VERBOSE
  begin
    $VERBOSE = nil
    yield if block_given?
  ensure
    # always re-set to old value, even if block raises an exception
    $VERBOSE = old_verbose
  end
end

puts "Starting"
MyConst = 1
MyConst = 2
suppress_all_warnings do
  GC.disable
end
puts "Done"

Запуск этого с JRuby 1.5.0 правильно предупреждает меня о повторной инициализации константы и корректно подавляет предупреждение GC.disable.

1 голос
/ 21 мая 2010

Если вы переключитесь с ruby-mysql на activerecord-jdbcmysql-adapter , вы можете полностью избежать этого предупреждения.

...