ruby - 如何使用 Ruby(无 RoR)保持 mysql 连接(mysql2 gem)

标签 ruby rack mysql2

我有一个使用 Rack 的非常简单的 Web 服务,没有 Rails,我将在每个有效连接上联系 MySQL。我想保持连接(例如在构造函数中),以便在每次请求时都重用它。让我们这样说:

  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 方法将重新连接?

最佳答案

好吧,:reconnect => true 似乎可以确保连接持续存在。

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

关于ruby - 如何使用 Ruby(无 RoR)保持 mysql 连接(mysql2 gem),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13013748/

相关文章:

ruby-on-rails - 如何在子文件夹中使用不同的部分和布局?

ruby-on-rails - 在 Rails 4 中检测用户代理 - 读取 HTTP header

ruby-on-rails - 动态根路径路由

ruby-on-rails - Rails 中使用 form_for 进行纬度/经度坐标插入

ruby - 如何在 Ruby 正则表达式中放置转义字符(不是 "escaped"字符)?

ruby-on-rails - 设计未显示的 log_in 错误

ruby - Docker Ruby Rack Redis 队列

ruby - 在生产环境中调试 Sinatra 应用程序时遇到问题

ruby-on-rails - 无法在 MAMP 上安装 mysql2 Gem

sql - Rails 4 中的左外连接