如何在rails上的线程ruby内管理/关闭多个数据库连接?

时间:2015-09-28 09:45:50

标签: ruby-on-rails multithreading activerecord

我有使用不同数据库连接的场景。

#database.yml    
development:
    adapter: mysql2
    database: dev_schema
    username: root
    password: root
    host: localhost

otherdb:
    adapter: mysql2
    database: xyz_schema
    username: root
    password: root
    host: localhost

使用上面定义的连接的两个模型。

   class Foo < ActiveRecord::Base
     #default uses developement connection
   end

   class Bar < ActiveRecord::Base
     establish_connection :otherdb
   end

在我的一个用例中,我手动创建线程如下。

 Thread.new do 
    begin
        Foo.last
        Bar.last
    rescue Exception => e
      raise e
    ensure
      ActiveRecord::Base.connection.close if ActiveRecord::Base.connection
    end
 end

观察到 ActiveRecord :: Base.connection.close ,只关闭开发而不是其他db和线程的高并发性,建立的数据库连接数多于database.yml中定义的连接池。

是否有像 Bar.connection.close 这样的语法来手动关闭当前线程的 otherdb 连接?

0 个答案:

没有答案