在Rails中ActiveRecord :: Base.establish_connection有什么影响?

时间:2014-07-08 09:23:34

标签: ruby-on-rails ruby activerecord

我在使用Passenger的生产中使用Rails。该应用程序能够并行处理多个请求

在迁移帮助程序代码中,我建立与旧数据库的连接,以将数据复制到新数据库。

通过呼叫建立连接     ActiveRecord::Base.establish_connection,它是仅影响当前请求还是会产生一些副作用?

获取数据后,我恢复了与Rails环境的连接。

(我的猜测是乘客产生了多个过程,因此这应该不是问题)

1 个答案:

答案 0 :(得分:0)

在普通的pasenger部署中,这根本不是问题。它确实只会产生多个进程。他们不共享任何州,所以不会有任何副作用。

如果您在多线程设置中使用乘客企业,这可能会引起一些担忧。但据我所知,establish_connection负责从连接池中获取新连接并将其保存到此Class的Thread.current哈希中。因此,也应该没有副作用,例如为其他请求全局切换连接。

进一步了解Concurrency and Database Connections with ActiveRecord