Rails:在并发线程中使用相同的模型会引发`未初始化的常量ModelName`

时间:2013-12-03 09:46:58

标签: ruby-on-rails multithreading concurrency rake

当两个并发线程尝试访问ModelName时,返回

uninitialized constant ModelName

如果rake multitask的两个任务试图同时访问一个模型或类,则会发生同样的错误。

这不是数据库问题,我的池大小足够大,即使对于没有数据库的常规类也会出错。

这是否可以确保两个并发线程可以同时访问同一个类或模型?我可以在两个不同的进程中运行它们,但我想确保它们可以访问共享变量。

1 个答案:

答案 0 :(得分:1)

考虑使用互斥锁。 我和班级有同样的问题。 这样的事情可以解决问题:

require 'thread'
mutex = Mutex.new
mutex.synchronize do
  MyClass.class_method(param)
end