Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用Sinatra和MongoDB-what';这是推荐的方法;“保持活力”;http请求之间的mongodb连接?_Ruby_Mongodb_Sinatra - Fatal编程技术网

Ruby 使用Sinatra和MongoDB-what';这是推荐的方法;“保持活力”;http请求之间的mongodb连接?

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

我使用过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
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文件的请求。