Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 阻止实例方法打印到控制台_Ruby_Mysql2_Puts - Fatal编程技术网

Ruby 阻止实例方法打印到控制台

Ruby 阻止实例方法打印到控制台,ruby,mysql2,puts,Ruby,Mysql2,Puts,我正在编写一个简单的Ruby脚本,它利用了mysql2gem 为了正确终止与数据库的连接并避免出现连接过多错误,我将连接存储到变量mysql中,如下所示: mysql = Mysql2::Client.new(:host => hst, :username => usr, :password => pass, :database => db, :connect_timeout => 30) 然后我关闭连接: mysql.close 发生这种情况时,我得到: cl

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

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

mysql = Mysql2::Client.new(:host => hst, :username => usr, :password => pass, :database => db, :connect_timeout => 30)
然后我关闭连接:

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

closed MySQL connection
在控制台中


如果终端中没有显示
已关闭的MySQL连接
,如何实现找到的实例方法
#close

def silence_stdout
  $stdout = File.new( '/dev/null', 'w' )
  yield
  ensure
  $stdout = STDOUT
end
然后用该方法执行
关闭

silence_stdout{mysql.close}
您可以这样做:

def silence_stdout
  $stdout = File.new( '/dev/null', 'w' )
  yield
  ensure
  $stdout = STDOUT
end
然后用该方法执行
关闭

silence_stdout{mysql.close}

工作起来很有魅力。谢谢你的解决方案。效果很好。感谢您提供的解决方案。
关闭的MySQL连接
实际上是一条错误消息。关闭连接后是否执行任何查询?@stefan这是一个循环,将
重试
,直到可以访问
db
。那么
closed-MySQL-connection
错误意味着什么呢?这意味着您正试图用一个关闭的连接运行一个查询,例如
MySQL.close;mysql.query(…)
@stefan你完全正确。谢谢。
关闭的MySQL连接
实际上是一条错误消息。关闭连接后是否执行任何查询?@stefan这是一个循环,将
重试
,直到可以访问
db
。那么
closed-MySQL-connection
错误意味着什么呢?这意味着您正试图用一个关闭的连接运行一个查询,例如
MySQL.close;mysql.query(…)
@stefan你完全正确。非常感谢。