ruby-on-rails - Druby 和 ActiveRecord 的线程问题

标签 ruby-on-rails ruby druby

我有一个 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/

相关文章:

ruby-on-rails - 基于条件渲染,rails

ruby-on-rails - 为什么我的 Cucumber 场景失败并显示 "Invalid keys :text, should be one of :text, ..."?

ruby - Chef - 在 SQLEOH 中使用 for 循环

ruby-on-rails - 在 Ruby 的后台作业中保护密码

javascript - 通过 AJAX 更改 link_to 参数

ruby - 是吗?和 dRuby 对象

ruby-on-rails - seed.rb 中的关联

ruby-on-rails - 搜索 "/"时出现 Thinking Sphinx 错误