代码之家  ›  专栏  ›  技术社区  ›  Corey Trager

使用Sinatra和MongoDB-建议用什么方法“保持”http请求之间的MongoDB连接?

  •  11
  • Corey Trager  · 技术社区  · 15 年前

    我使用过ASP.NET,现在正在开发Sinatra/MongoDB应用程序。在ASP.NET体系结构中,与给定请求使用的数据库的连接来自ADO.NET管理的连接池。请求之间的连接在池中保持活动状态,这样就不会为每个http请求支付构建和断开连接的成本。

    Sinatra MongoDB应用程序中是否有类似的机制,或者我是否需要连接/断开每个请求?如果有一种机制,代码是什么样子的?

    EDIT1:以下操作不起作用。浏览器发送的每个HTTP请求都会点击新的.db行,包括对css、js、jpeg文件的请求。

    require 'mongo'
    include Mongo
    
    db = Mongo::Connection.new.db("MyDb")
    
    class MyApp < Sinatra::Base
        get '/' do
           etc
    
    2 回复  |  直到 15 年前
        1
  •  8
  •   rfunduk    15 年前

    ruby mongodb driver 包括连接池。你可以在你的房间里设置游泳池 configure 阻止你的sinatra应用程序和Bob的叔叔。

        2
  •  6
  •   Kyle Banker    15 年前

    在初始化db时,可能需要尝试使用全局变量或实例变量。

    # Should be in a configure block
    configure do
      DB = Connection.new.db('test-sinatra')
    end
    

    此外,连接池不是这里的问题,当然也不是这个特定问题的解决方案。