有选择地沉默JRuby警告

时间:2010-05-21 01:10:03

标签: ruby warnings jruby

我在JRuby下使用ruby-mysql库并收到以下警告:

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

有没有办法让JRuby停止抱怨这个?

2 个答案:

答案 0 :(得分:6)

你有几个选择。

首先,您可以使用-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 :(得分:1)

如果从ruby-mysql切换到activerecord-jdbcmysql-adapter,则可以完全避免此警告。