Ruby 使用断开连接的Sequel::Database对象进行查询时应该发生什么?

Ruby 使用断开连接的Sequel::Database对象进行查询时应该发生什么?,ruby,sequel,Ruby,Sequel,我面临的情况如下: 初始化数据库连接: DB=Sequel.connect(“”) 通常将其用于原始查询(本例中为SQL): DB['SELECT*FROM my DB'],每行| 将“它能正常工作(正如它应该的那样)”放入 结束 断开与该数据库池的所有连接: DB.disconnect 再次使用断开连接的DB对象进行查询(无需再次显式连接): DB['SELECT*FROM my DB'],每行| “它仍然有效(我没想到它会起作用)” 结束 正如我在connections inspec

我面临的情况如下:

  • 初始化数据库连接:
  • DB=Sequel.connect(“”)
    
  • 通常将其用于原始查询(本例中为SQL):
  • DB['SELECT*FROM my DB'],每行|
    将“它能正常工作(正如它应该的那样)”放入
    结束
    
  • 断开与该数据库池的所有连接:
  • DB.disconnect
    
  • 再次使用断开连接的DB对象进行查询(无需再次显式连接):
  • DB['SELECT*FROM my DB'],每行|
    “它仍然有效(我没想到它会起作用)”
    结束
    
    正如我在connections inspector中观察到的,即使在断开连接之后,重新使用该对象最终也会打开一个新的连接,连接到该对象最初配置为连接的同一个DB,并且一切正常

    最后,我在类中的
    initialize
    时间配置了一个简单的连接,但在查询循环的每次迭代后都将其关闭,令我惊讶的是,它工作得很好,没有任何抱怨

    我的问题是:它应该是这样表现的吗?这是记录在案的行为,还是仅仅是未定义的行为,由于Sequel的良好设计模式(我猜?),最终导致一致的行为?到目前为止,我还没有找到任何东西,无论是在某地还是在某地


    我希望继续使用这种格式(因为在我的具体案例中它节省了大量代码行),但前提是它是可靠的。

    这是投稿人的预期行为

    这是预期的行为。数据库#断开连接将从连接池中删除连接。当需要新连接时,由于连接池为空,Sequel会在此时创建一个新连接。我认为,只有当您认为数据库对象代表单个连接时,才可能认为这是一个bug,而实际情况并非如此