我有使用 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:连接不能在分叉的进程中重用。
将数据库连接例程放置到机架文件 config.ru 是否正确,或者最好以不同的方式进行?如果第一个变体比如何从应用程序代码正确调用连接?
PS:我知道我可以passenger_spawn_method conservative
在应用程序代码中继续打开连接,但这不是我正在寻找的方式,因为它的速度和资源使用问题。