私の 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()
私のメインアプリには、スレッドセーフがあります! 構成オプション セット。私はスレッドセーフでそれを知っています! 有効にすると、各コントローラーはリクエストごとに独自のスレッドに存在します。
しかし、このモジュールはスレッドセーフですか? すべての要求に対してこのモジュールのコピーが 1 つしかないため、本質的にスレッドセーフではなく、Mutex などを使用して手動で同期する必要があると思われます。具体的には、ActiveResource クラスの外部でHTTP 要求のヘッダーを設定するコードがありますWebResource
。これにより、スレッドの問題が発生する可能性がありますか?