我使用过ASP.NET,现在我正在使用Sinatra / MongoDB应用程序。使用ASP.NET体系结构,给定请求使用的数据库连接来自ADO.NET管理的连接池。在请求之间,池中的连接保持活动状态,因此不会为每个http请求支付构建和拆除连接的成本。
Sinatra MongoDB应用程序中是否有类似的机制,或者我是否需要连接/断开每个请求?如果有机制,代码是什么样的?
EDIT1:以下内容无效。浏览器发送的每个HTTP请求都会命中new.db行,包括对css,js,jpeg文件的请求。
require 'mongo'
include Mongo
db = Mongo::Connection.new.db("MyDb")
class MyApp < Sinatra::Base
get '/' do
etc
答案 0 :(得分:8)
ruby mongodb driver的最新版本包括连接池。您可以在sinatra应用程序的configure
块中设置池,而Bob是您的叔叔。
答案 1 :(得分:6)
如果在请求方法范围之外创建数据库连接,则不会在每次请求时重新声明连接。
初始化db时,您可能希望尝试使用全局变量或实例变量。
# Should be in a configure block
configure do
DB = Connection.new.db('test-sinatra')
end
此外,连接池不是问题,当然也不是解决这个特定问题的方法。