2010-11-21 62 views

回答

6

坐落在一个配置块的全局变量:

configure do 
    $mongo = Mongo::Connection.new 
end 
settings

或坚持下去:

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 

它所做的是,它重新连接到客运叉后的数据库,这样子进程都有自己的连接。不这样做会给你真正奇怪的错误。