防止实例方法打印到控制台

Preventing an Instance Method from Printing to Console

我正在编写一个简单的 Ruby 脚本,它利用 mysql2 gem.

为了正确终止与数据库的连接并避免 Too many connections 错误,我将我的连接存储到变量 mysql 中,如下所示:

mysql = Mysql2::Client.new(:host => hst, :username => usr, :password => pass, :database => db, :connect_timeout => 30)

然后我关闭连接:

mysql.close

发生这种情况时,我得到:

closed MySQL connection

在控制台中。

如何在 closed MySQL connection 不显示在终端中的情况下实现实例方法 #close 找到 here

你可以这样做:

def silence_stdout
  $stdout = File.new( '/dev/null', 'w' )
  yield
  ensure
  $stdout = STDOUT
end

并使用该方法close

silence_stdout{mysql.close}