2010-05-21 38 views
2

我使用的红宝石MySQL库在JRuby下,并得到以下警告:选择性沉默的JRuby警告

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

有没有什么办法让JRuby中不停抱怨呢?

回答

6

你有几个选项。

首先,您可以使用-W0选项运行程序,该选项将禁用所有警告。这可能不是你想要的。

但是,应用-W0与设置$VERBOSEnil相同 - 所以我们可以简单地在要禁止警告的代码周围执行此操作。这是第二个也是更可取的选择。

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警告。

+0

非常好,内容翔实的答案。谢谢! – makenai 2010-05-21 05:25:54