2016-03-04 7 views
0

Я пишу простой скрипт Ruby, который использует жемчужину mysql2.Предотвращение метода экземпляра от печати на консоль

Для того, чтобы корректно завершить соединение с базой данных и избежать ошибок Too many connections, я храню соединение в переменную mysql следующим образом:

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

и затем закрываю соединение:

mysql.close 

Когда это происходит, я получаю:

closed MySQL connection 

в консоли.

Как я могу реализовать метод экземпляра here без closed MySQL connection появляется в терминале?

+1

'закрыто MySQL connection' фактически сообщение об ошибке. Выполняете ли вы какие-либо запросы после закрытия соединения? – Stefan

+0

@stefan Это цикл, который будет «повторять» до тех пор, пока 'db' не будет доступен. Что означает ошибка «закрытого соединения с MySQL»? – EVAL

+1

Это означает, что вы пытаетесь запустить запрос с закрытым соединением, например. 'Mysql.close; mysql.query (...) ' – Stefan

ответ

3

вы можете сделать это:

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

и сделать close с этим методом

silence_stdout{mysql.close} 
+1

Работает как шарм. Спасибо за решение. – EVAL