3

私はRackを使用した非常にシンプルなWebサービスを持っており、有効な接続ごとにMySQLに連絡するRailsはありません。接続を(たとえばコンストラクターで)永続化したいので、すべての要求でそれを再利用します。このようなことを言いましょう:

  class Service

    def initialize(dbhost, dbport, dbname, dbuser, dbpass)
      @client = Mysql2::Client.new(
          :host => dbhost, 
          :port => dbport, 
          :database => dbname,
          :username => dbuser, 
          :password => dbpass)
    end

    def call(env)
       # some logic that will call:
       results = _query(sql)
    end

    def _query(sql)
      results = @client.query(sql)
    end

  end

  Rack::Handler::Mongrel.run Service.new(DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASS), :Port => 8123  

上記のコードを使用すると、サービスはMySQL接続を取得し、すべてのリクエストでクエリを実行します。_queryしかし、接続が切断された場合にメソッドが再接続することを確認するにはどうすればよいですか?

4

1 に答える 1

5

まあ、:reconnect => true接続が持続することを保証するようです。

  @client = Mysql2::Client.new(
      :host => dbhost, 
      :port => dbport, 
      :database => dbname,
      :username => dbuser, 
      :password => dbpass,
      :reconnect => true
      )
于 2012-11-07T08:36:55.060 に答える