我有一个 Rails 应用程序和一个单独的 druby 进程。这个过程给了我一些方法,在每个 druby 方法的第一行都有对 ActiveRecord::Base.establish_connection 的调用,其中 db_name 取决于 rails 应用程序设置的参数。 有时进程获取错误的数据库名称,我认为这可能是并发问题。可能吗?关于如何使其线程安全的任何想法?
感谢您的帮助! 罗伯托
最佳答案
是的,这是一个并发问题。
要修复它,您必须稍微更改架构,但我没有足够的信息。
- 在后端运行的代码是否与在您的 Rails 应用程序中运行的代码相同?
- 您的不同数据库使用相同的模型吗?
- 您有多少个不同的数据库?这个数字会增长吗?
基本上,如果您有少量且固定数量的数据库,最简单的方法就是使用不同的 ruby 进程。
如果您有不同模型的不同数据库,您可以设想使用不同的基类:
AppA < ActiveRecord::Base
Model1 < AppA
Model2 < AppA
AppB < ActiveRecord::Base
Model3 < AppB
然后就可以调用了
AppA.establish_connection(...)
AppB.establish_connection(...)
到不同的数据库。
关于ruby-on-rails - Druby 和 ActiveRecord 的线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/528449/