私は安らかなリソースと通信するモデルのようなアクティブなリソースを持っています。 リソースパスにはいくつかの動的パラメータがあります。そのため、各リクエストの前にモデル上にいくつかのクラス変数を設定しています。Ruby on Railsの各リクエストでクラス変数を設定する際の競合状態を回避する方法
私はこのようなものがあります。自分のアプリケーションのコントローラで
class MyClass << MySuperClass::Base
class << self
attr_accessor :site
attr_accessor :shop_id
attr_accessor :product_id
def get
RestClient.get(self.site)
end
def set_site(shop_id, product_id)
self.site = "http://example.com/api/shop/#{shop_id}/product/#{product_id}
end
end
end
を私はshop_idを設定し、フィルタの前に持っていると私はここから理解したよう
class ApplicationController < ActionController::Base
before_filter :set_site
private
def set_site
MyClass.set_site(current_shop.id, current_product.id)
end
end
をPRODUCT_ID:http://m.onkey.org/thread-safety-for-your-rails これは可能性がありいくつかの競争条件の原因。
この記事は3年前に書かれていますので、要求ごとにクラス変数を設定すると競合状態が発生する可能性がありますか?
もしそうなら、競合状態を引き起こさずに同様の動作を達成するための現在のベストプラクティスは何ですか?