невозможно отключиться от базы данных postgres с помощью драгоценного камня сиквела

Я только начал использовать rubygem Sequel, и похоже, что метод «отключения» не работает. Вот результат моего тестового сеанса IRB:

1.9.3-p194 :002 > require 'sequel'
 => true 
1.9.3-p194 :003 > DB = Sequel.connect('postgres://postgres:mypassword@my_pg_host:5432/my_db')
 => #<Sequel::Postgres::Database: "postgres://postgres:mypassword@my_pg_host:5432/my_db"> 
1.9.3-p194 :004 > DB.test_connection
 => true 
1.9.3-p194 :005 > DB.disconnect
 => [] 
1.9.3-p194 :006 > DB.test_connection
 => true

Я не вижу в документации Sequel ничего, что указывало бы, почему это не сработает:

http://sequel.rubyforge.org/rdoc/classes/Sequel/Database.html#method-i-disconnect

Я что-то упускаю?


person MothOnMars    schedule 18.10.2012    source источник


Ответы (1)


DB.disconnect отключает все соединения, находящиеся в настоящее время в пуле соединений, и удаляет соединения из пула. Последующий вызов DB.test_connection будет искать соединение в пуле соединений, и, поскольку пул пуст, будет создано новое соединение.

Код, который вы публикуете, является полностью ожидаемым поведением, но я предполагаю, что вы не знали, что DB не представляет собой одно соединение с базой данных.

person Jeremy Evans    schedule 19.10.2012
comment
Ах, это имеет смысл. Благодарю за разъяснение! - person MothOnMars; 20.10.2012