私はSinatra+Sequelを使用してrubyで書かれたテストアプリを持っています。
config.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
テスト環境でPhusionPassengerを使い始めるまでは、すべて問題ありませんでした。nginx error.logに例外があります:
Sequel :: DatabaseError-RuntimeError:接続はフォークされたプロセスで再利用できません。
DB接続ルーチンをラックアップファイルconfig.ruに配置するのは正しいことですか、それとも別の方法で行う方が良いですか?アプリケーションコードから接続を正しく呼び出す方法よりも最初のバリアントの場合はどうなりますか?
PS:アプリコードで接続を開いて続行できることは知っていますがpassenger_spawn_method conservative
、速度とリソース使用量の問題があるため、私が探している方法ではありません。