2010-05-06 8 views
5

intendo quello che è stato precedentemente stabilito comeCome disconnettere una connessione sequel esistente ruby ​​in un database?

DB = Sequel.sqlite('my_blog.db') 

o

DB = Sequel.connect('postgres://user:[email protected]/my_db') 

o

DB = Sequel.postgres('my_db', :user => 'user', :password => 'password', :host => 'localhost') 

o eccetera.

La classe Sequel :: Database non ha un metodo di istanza pubblico chiamato "disconnect" o comunque ha una "connessione".

Forse qualcuno ha già affrontato questo problema. Gradirei qualsiasi idea.

+0

Non funziona: http://sequel.rubyforge.org/rdoc/classes/Sequel/Database.html#M000332 Non è logico che il metodo 'disconnect' sia un metodo di classe BTW. –

+0

Funziona, ma disconnette tutte le connessioni stabilite invece di quella, sebbene quel metodo sia di tipo di istanza pubblica – mcmlxxxiii

+0

Hai ragione, intendevo il metodo di istanza pubblica. Corretto. Grazie – mcmlxxxiii

risposta

12

Come Mladen Jablanović fa notare, si può solo fare:

DB.disconnect 

Che sarà scollegare tutte le connessioni disponibili in pool di connessioni che dell'istanza Sequel :: Database. Non è possibile scegliere una connessione specifica da disconnettere e non avrebbe senso. I pool di connessione più semplici supportano comunque la disconnessione di tutte le connessioni per un frammento specifico.

+0

Dopo aver detto che non avrebbe avuto senso, ho iniziato a dubitare di aver capito bene i pool di connessioni. Il seguente codice presuppone che più moduli possano utilizzare simultaneamente una connessione specifica dall'hash di DB: [[[DB = {}; DB [: a] Sequel.postgres ('a', opts); DB [: b] Sequel.postgres ('b', opts); DB [: c] Sequel.postgres ('c', opts)]]]. L'attività consiste nel disconnettere tutte le connessioni DB [: a], in realtà nel rilascio del database specifico. L'approccio sopra è giusto? È possibile? DB [: a] .disconnect non funziona come desiderato, o non capisco male? BTW, molte grazie per il toolkit! – mcmlxxxiii

+0

Ci scusiamo per il brutto messaggio, non sono ancora abituato ai metodi di Stackoverflow. Il codice di esempio e i chiarimenti dovrebbero probabilmente essere in una domanda (( – mcmlxxxiii

+1

Non si arriva mai a scegliere una connessione specifica da utilizzare. Supponendo che DB [: a] sia il proprio Sequel :: Database, DB [: a] .disconnect disconnetti tutte le connessioni disponibili nel pool di connessioni DB [: a]. Se hai altre domande, potresti voler postare sul Gruppo Google di Sequel con il codice che stai utilizzando. –

Problemi correlati