私はSinatra + Sequelを使ってRuby上でテストアプリケーションを書いています。nginxでPhusion Passengerで作業中のSequel DB接続のための適切な場所
config.ru:
require './main'
run Sinatra::Application
例コード:
require 'sinatra'
require 'haml'
require 'sequel'
DB=Sequel.connect('oracle://test:[email protected]')
class Tarification < Sequel::Model(DB[:test_table])
end
get '/' do
haml :index
end
私は私のテスト環境でのPhusion旅客を使用して起動するまで、すべてが大丈夫でした。今、私はnginxののerror.logファイルに例外を持っている:
Sequel::DatabaseError - RuntimeError: The connection cannot be reused in the forked process.
は、ファイルconfig.ruをrackupするDB接続ルーチンを置くには正しいことですか、それは別の方法でそれを行う方が良いでしょうか?アプリケーションコードから正しい接続を呼び出す方法よりも最初の変種ですか?
P .:私はpassenger_spawn_method conservative
を実行してアプリケーションコードで接続を開くことができますが、スピードとリソースの使用上の問題から探している方法ではありません。
私自身の質問に答えるために、私は[RubyForge](http://rubyforge.org/forum/message.php?msg_id=63321)に関する少しの関連情報を見つけました。 ラックアップファイル 'config.ru'の一番下に' DB.disconnect'を置く必要がありました。 しかし、私はまだ全体的に正しいアプローチではないと私は考えています。乗客がどのようにアプリケーションを管理するかを整理するための方向性は高く評価されます。 –
乗客は使用できるフォークフックを提供していないので、アプリを事前にロードする場合は、config.ruの一番下にあるDB.disconnectを呼び出すことをお勧めします。 –