Ruby 使用Sinatra和MongoDB-what';这是推荐的方法;“保持活力”;http请求之间的mongodb连接?
我使用过ASP.NET,现在正在开发Sinatra/MongoDB应用程序。在ASP.NET体系结构中,与给定请求使用的数据库的连接来自ADO.NET管理的连接池。请求之间的连接在池中保持活动状态,这样就不会为每个http请求支付构建和断开连接的成本 Sinatra MongoDB应用程序中是否有类似的机制,或者我是否需要连接/断开每个请求?如果有一种机制,代码是什么样子的 EDIT1:以下操作不起作用。浏览器发送的每个HTTP请求都会点击新的.db行,包括对css、js、jpeg文件的请求Ruby 使用Sinatra和MongoDB-what';这是推荐的方法;“保持活力”;http请求之间的mongodb连接?,ruby,mongodb,sinatra,Ruby,Mongodb,Sinatra,我使用过ASP.NET,现在正在开发Sinatra/MongoDB应用程序。在ASP.NET体系结构中,与给定请求使用的数据库的连接来自ADO.NET管理的连接池。请求之间的连接在池中保持活动状态,这样就不会为每个http请求支付构建和断开连接的成本 Sinatra MongoDB应用程序中是否有类似的机制,或者我是否需要连接/断开每个请求?如果有一种机制,代码是什么样子的 EDIT1:以下操作不起作用。浏览器发送的每个HTTP请求都会点击新的.db行,包括对css、js、jpeg文件的请求 r
require 'mongo'
include Mongo
db = Mongo::Connection.new.db("MyDb")
class MyApp < Sinatra::Base
get '/' do
etc
require'mongo'
包括Mongo
db=Mongo::Connection.new.db(“MyDb”)
类MyApp
如果在请求方法范围之外创建数据库连接,则不会在每次请求时重新启动连接
在初始化db时,可能需要尝试使用全局变量或实例变量
# Should be in a configure block
configure do
DB = Connection.new.db('test-sinatra')
end
此外,连接池不是这里的问题,当然也不是这个特定问题的解决方案。最新版本包括连接池。您可以在sinatra应用程序和Bob的叔叔的
configure
块中设置池。我想我正在按照您的建议进行设置,但它没有按照您所说的那样运行。请参阅“EDIT1”在我的问题中,作为一个不起作用的例子。这里有一个很好的使用Sinatra和MongoDB的例子-可能可以从查看代码开始。当我执行您所做的操作并查看mongod的输出时,我看到每个HTTP请求都有连接,包括对css和js文件的请求。