Ответ 1
В новейшей версии ruby mongodb driver включен пул соединений. Вы можете настроить свой пул в своем блоке configure
в своем приложении-синатре и Бобу дяде.
Я использовал 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
В новейшей версии ruby mongodb driver включен пул соединений. Вы можете настроить свой пул в своем блоке configure
в своем приложении-синатре и Бобу дяде.
Если вы создаете соединение с базой данных вне сферы применения методов запроса, соединение не будет восстановлено при каждом запросе.
Вы можете попробовать использовать глобальную переменную или экземпляр при инициализации db.
# Should be in a configure block
configure do
DB = Connection.new.db('test-sinatra')
end
Кроме того, объединение пулов не является проблемой здесь и, конечно же, не является решением этой конкретной проблемы.