gpt4 book ai didi

ruby - 使用 nginx 在 Phusion Passenger 上工作时 Sequel DB 连接的正确位置

转载 作者:数据小太阳 更新时间:2023-10-29 07:34:45 25 4
gpt4 key购买 nike

我有使用 Sinatra+Sequel 在 ruby​​ 上编写的测试应用程序。

配置.ru:

require './main'

run Sinatra::Application

示例代码:

require 'sinatra'
require 'haml'
require 'sequel'

DB=Sequel.connect('oracle://test:test@test')

class Tarification < Sequel::Model(DB[:test_table])

end

get '/' do
haml :index
end

一切正常,直到我开始在我的测试环境中使用 Phusion Passenger。现在我在 nginx error.log 中有异常:

Sequel::DatabaseError - RuntimeError: The connection cannot be reused in the forked process.

将 DB 连接例程放置到 rackup 文件 config.ru 中是正确的做法还是以其他方式更好?如果第一个变体比如何从应用程序代码正确调用连接?

P.S.:我知道我可以passenger_spawn_method conservative 并继续在应用程序代码中打开连接,但这不是我想要的方式,因为它存在速度和资源使用问题。

最佳答案

此问题记录在 Appendix C.3 中Phusion 乘客手册。通常的方法是挂接到 post-fork 回调并在那里重新建立连接。

关于ruby - 使用 nginx 在 Phusion Passenger 上工作时 Sequel DB 连接的正确位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8869526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com