rails中的多个并发数据库连接

时间:2013-10-06 15:19:08

标签: mysql ruby-on-rails ruby database database-connection

我有几个客户使用的rails应用程序。每个客户端都通过域访问,但所有域都使用相同的rails app:

my-client-1.mycompany.com
my-client-2.mycompany.com
my-client-n.mycompany.com

该应用程序适用于多个数据库,每个客户端一个数据库。所有数据库都具有相同的结构,它们是相同的。我在database.yml中每个数据库有一个配置:

my-client-1:
 adapter:
 username:

my-client-2:
 adapter:
 username:

...

我需要向应用程序指出,基于一个用户使用的域,它必须更改相应的数据库。例如,如果用户通过my-client-2.mycompany.com进入,那么要使用的数据库必须是my-client2。

我已经通过在我的application_controller.rb中包含此代码来完成此操作:

before_filter :set_db_connection

  def set_db_connection
     d = request.host.split('.')
     current_domain = d[0]
     ActiveRecord::Base.establish_connection current_domain
  end

现在我有接下来的两个问题:

  1. ¿这是解决这个问题的正确方法吗?
  2. ¿如果一个用户正在处理某些事情并且需要60秒,会发生什么情况,并且在那一刻,由于上面的代码,另一个用户通过其他域进入并更改连接。它是否会影响第一个用户购买更改其连接,并且在某些时候需要60秒的过程将读取或写入错误的数据库?
  3. 谢谢

0 个答案:

没有答案