使用jruby 1.5.1
在一个使用宝石的非常简单的cronjob中:
它还在jar中使用纯Java JDBC驱动程序,jtds-1.2.5.jar
每次我运行它时,我都会在STDERR中找到它(这会让我的cronjob监视实用程序烦恼,它认为stderr上的任何内容都可能有问题)
/usr/local/rvm/gems/jruby-1.6.5.1/gems/deprecated-2.0.1/lib/deprecated.rb:199 warning: already initialized constant Deprecate
??有任何想法吗?发生了什么事,我该怎么办呢?不确定哪些宝石依赖于“已弃用”的库或什么版本,任何简单的方法都可以找到?
啊,好吧,想通了:
[rochkind@catalyst pull_reserves]$ gem dependency dbi
Gem dbi-0.4.5
deprecated (= 2.0.1)
但0.4.5是'dbi'的最新版本,它被锁定为2.0.1的'弃用'。有一个更新的3.0.0版本已弃用。
好的......不确定我现在的问题是什么,除非有人能够详细了解发生了什么,以及我的实际选择是什么。我想报告是'dbi'宝石的一个问题,希望它有一些关心的维护者,我不知道。
更新:好的,从8月开始就已经存在问题。 https://github.com/erikh/ruby-dbi/pull/8看起来宝石不是很保养。叹。有时红宝石社区真的让我感到沮丧。
答案 0 :(得分:-1)
检查一下,我认为这就是你所需要的:
有评论提及Rails method to silence warnings,但我不认为您使用的是Rails。
编辑:我在这里找到了稍微清晰的代码: http://mislav.uniqpath.com/2011/06/ruby-verbose-mode/编辑:注意:下面的评论者似乎不同意上面提到的博客条目。我没有表达对博客条目的同意或不同意,我并不反对Ruby的冗长模式的好坏。只是将作者用于我在那里找到的稍微清洁的代码。
我认为这就是你要做的事情:
module Kernel
def silence_warnings
with_warnings(nil) { yield }
end
def with_warnings(flag)
old_verbose, $VERBOSE = $VERBOSE, flag
yield
ensure
$VERBOSE = old_verbose
end
end unless Kernel.respond_to? :silence_warnings
# assuming the warning is being generated when the dbi module is loaded...
silence_warnings { require 'dbi' }