У меня есть активный ресурс, похожий на модель, которая общается с остальным ресурсом. Путь к ресурсу имеет некоторые динамические параметры, поэтому я устанавливаю некоторые переменные класса в модели перед каждым запросом.Как избежать условий гонки при установке переменных класса при каждом запросе в 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 и PRODUCT_ID
class ApplicationController < ActionController::Base
before_filter :set_site
private
def set_site
MyClass.set_site(current_shop.id, current_product.id)
end
end
Как я понимаю здесь: http://m.onkey.org/thread-safety-for-your-rails Это может быть причиной некоторых условий гонки.
Эта статья была написана 3 года назад, так что все еще так, что установка переменных класса для запроса может привести к состоянию гонки?
И если да, то какова нынешняя лучшая практика для достижения аналогичного поведения без возникновения состояния гонки?