2010-05-21 12 views
2

j'utilise la bibliothèque Ruby-mysql sous JRuby et obtenir les avertissements suivants:silence avertissements JRuby sélectif

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

Est-il possible d'obtenir JRuby arrêter de se plaindre à ce sujet?

Répondre

6

Vous avez quelques options. D'abord, vous pouvez exécuter votre programme avec l'option -W0 qui désactive tous les avertissements. Ce n'est probablement pas ce que tu veux. Toutefois, l'application -W0 est la même que la définition de $VERBOSE à nil - nous pouvons donc simplement faire cela autour du code où nous voulons supprimer les avertissements. C'est la deuxième option et beaucoup plus préférable.

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" 

L'exécution de ce avec JRuby 1.5.0 correctement me met en garde contre la constante réinitialisée et supprime correctement l'avertissement GC.disable.

+0

Très bonne et informative. Merci! – makenai