Rails引擎线程安全 – ActiveResource

我的Rails 3.1应用程序使用引擎,我想知道访问此引擎是否是线程安全的。

我在引擎中有/lib/mymodule.rb,它看起来像这样:

module MyModule def self.my_method() begin data = WebResource.find(:all) # Where WebResource < ActiveResource::Base rescue data = nil end return data end end 

然后在我的视图/控制器中,我将此方法称为:

 MyModule::WebResource.headers[:some_id] = cookies[:some_id] MyModule::my_method() 

在我的主应用程序中,我有线程安全! 配置选项集。 我知道线程安全! 启用后,每个Controller都存在于每个请求的自己的线程中。

但是,这个模块线程安全吗? 我怀疑这个模块只有一个副本用于所有请求,因此它本身并不是线程安全的,并且需要使用类似Mutex的手动同步。 具体来说,我有一些代码,用于在ActiveResource类WebResource 之外设置HTTP请求的标头。 这会导致线程问题吗?

这将取决于您在此方法中执行的操作是否是线程安全的。 如果它没有触及类变量,那么它是线程安全的。

如果它在类级别存储或设置信息并假设在再次使用它之前没有其他方法会触及该信息,则它不是线程安全的。