我有一个rails应用程序和一个单独的druby进程。这个过程给了我一些方法,在每个druby的方法的第一行都有一个对ActiveRecord::Base.establish_connection的调用,其中的db_name依赖于rails应用程序设置的一个参数。有时进程会得到错误的数据库名称,我认为这可能是一个并发问题。会是这样吗?有没有办法让它成为线程安全的?
谢谢你的帮助!罗伯托
发布于 2009-05-15 10:46:49
是的,这是一个并发问题。
要修复它,您必须稍微更改一下您的体系结构,但我没有足够的信息。
基本上,如果您有少量固定数量的数据库,最简单的方法就是使用不同的ruby进程。
如果你有不同的数据库和不同的模型,你可以设想使用不同的基类:
AppA < ActiveRecord::Base
Model1 < AppA
Model2 < AppA
AppB < ActiveRecord::Base
Model3 < AppB然后你就可以调用
AppA.establish_connection(...)
AppB.establish_connection(...)到不同的数据库。
https://stackoverflow.com/questions/528449
复制相似问题