【问题标题】:How to disconnect an existing ruby sequel connection to a database?如何断开与数据库的现有 ruby​​ 续集连接?
【发布时间】:2010-05-06 18:08:16
【问题描述】:

我的意思是以前建立的那个

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

DB = Sequel.connect('postgres://user:password@localhost/my_db')

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

等等。

Sequel::Database 类没有称为“disconnect”的公共实例方法,尽管它有“connect”方法。

也许有人已经遇到过这个问题。我会很感激任何想法。

【问题讨论】:

  • 这不起作用:sequel.rubyforge.org/rdoc/classes/Sequel/Database.html#M000332 disconnect 方法成为类方法 BTW 是不合逻辑的。
  • 它有效,但它断开了所有已建立的连接而不是一个,尽管该方法是公共实例类型的
  • 你说得对,我的意思是公共实例方法。已更正。谢谢
  • 哪一个? DBDatabase,而不是 Connection。 Sequel 的连接池也有disconnect 方法。

标签: ruby sequel


【解决方案1】:

正如 Mladen Jabnović 指出的那样,您可以这样做:

DB.disconnect

这将断开该 Sequel::Database 实例的连接池中的所有可用连接。你不能选择一个特定的连接来断开连接,这样做是没有意义的。不过,分片连接池确实支持断开特定分片的所有连接。

【讨论】:

  • 在你说这没有意义之后,我开始怀疑我是否理解连接池。以下代码假设多个模块可以同时使用来自 DB 哈希的特定连接: [[[ DB = {}; DB[:a] Sequel.postgres('a', opts); DB[:b] Sequel.postgres('b', opts); DB[:c] Sequel.postgres('c', opts) ]]]。任务是断开所有 DB[:a] 连接,实际上是释放特定数据库。上述方法对吗?那可能吗? DB[:a].disconnect 不能按预期工作,还是我误解了?顺便说一句,非常感谢工具包!
  • 对不起,丑陋的消息,我还没有不习惯 Stackoverflow 的方法。示例代码和说明可能应该在一个问题中((
  • 您永远无法选择要使用的特定连接。假设 DB[:a] 是您的 Sequel::Database,DB[:a].disconnect 将断开 DB[:a] 连接池中的所有可用连接。如果您有更多问题,您可能想在 Sequel 的 Google 群组上发布您正在使用的代码。
猜你喜欢
  • 1970-01-01
  • 2014-11-15
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 2019-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多