4
루비 mongodb 드라이버를 사용하면 각 요청에서 연결을 다시 만들 필요가 없도록 경로 메서드에서 액세스 할 수있는 구성 블록에 연결 개체를 만들 수 있습니까?Sinatra에서 mongodb에 대한 전역 연결 개체를 만들려면 어떻게해야합니까?
루비 mongodb 드라이버를 사용하면 각 요청에서 연결을 다시 만들 필요가 없도록 경로 메서드에서 액세스 할 수있는 구성 블록에 연결 개체를 만들 수 있습니까?Sinatra에서 mongodb에 대한 전역 연결 개체를 만들려면 어떻게해야합니까?
설정 구성 블록 전역 변수 : settings
에서
configure do
$mongo = Mongo::Connection.new
end
또는 스틱 :
configure do
set :mongo, Mongo::Connection.new
end
get '/' do
# the connection is available through settings.mongo
end
내가이 매우 우아의도를 찾을 수 있다고한다.
개발 중에는 요청이있을 때마다 연결이 생성되지만 프로덕션 환경에서 서버를 시작하는 것처럼 보일 수 있습니다. 그러면 다르게 동작합니다 (예 : thin -e production
). 앱이 승객으로 실행됩니다 경우
또한, 당신은이 작업을 수행 할 필요가 :
configure do
if defined?(PhusionPassenger)
PhusionPassenger.on_event(:starting_worker_process) do |forked|
if forked
# *** reconnect to the database here! ***
end
end
end
end
는 그것이 무엇을하면 해당 자식 프로세스가 자신의 연결이 그래서, 승객 포크 후 데이터베이스에 다시 연결한다는 것입니다. 이 작업을 수행하지 않으면 정말 이상한 오류가 발생합니다.