2009-07-09 7 views
1

小さなAPI実装にSinatraとSequelを使用しています。しかし、問題は、すべてのページ要求に対して、SequelはMySQLへの新しい接続を開き、タイムアウトするまで開いておくか、Apacheを再起動することです。Sequel + Sinatra + Phusion Passenger + MySQL接続管理

接続を再利用する方法については多くのドキュメントがないので、ヘルプ、説明、または正しい方向のポインタが役立ちます。

+0

どこに接続を設定しますか?いくつかのサンプルコードを投稿できますか? – BaroqueBobcat

答えて

1

私たちが間違っていたことを理解しました。それはむしろばかばかしく、Sinatraのフィルターの前にSequelを初期化しました。

は、だからではなく、私たちは行います

DB = Sequel.mysql("...") 

その後、我々は単に続編を使用するようにDB定数を使用します。

1

私は小さなラッパーで続編のものを包み、このラッパーを再利用し、次のように:また

get '/api/:call' do 
    @@api ||= SApi.new 
    @@api.call(params[:call]) 
end 

class SApi 
    def initialize 
    connect 
    end 
    def connect 
    @con = Sequel.connect("...") 
    end 
    def call(x) 
    #handle call using @con 
    end 
end 

、あなたが終わったらcon.disconnect @呼び出したり、ブロックを使用してSequel.connectを呼び出すことができます:

Sequel.connect("...") do |c| 
    # work with c 
end #connection closed 
+0

しかし、私たちは既にこの問題を別の方法で解決しています。私はちょっと閉じた/質問に答えることを忘れた*ホイッスル* :) – jimeh

関連する問題