У меня есть активная модель, похожая на ресурс, которая связывается с ресурсом отдыха.
Путь к ресурсу имеет некоторые динамические параметры, поэтому я устанавливаю некоторые переменные класса в модели перед каждым запросом.
У меня есть что-то вроде этого:
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
В моем контроллере приложения у меня есть фильтр before, который устанавливает 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 года назад, так что до сих пор дело в том, что установка переменных класса для запроса может вызвать состояние гонки?
И если да, то какова текущая лучшая практика для достижения подобного поведения без возникновения состояния гонки?