Digamos que tengo una clase de Ruby en mi proyecto Rails que establece una variable de instancia.¿Deben establecerse variables de instancia de clase en Rails dentro de un mutex?
class Something
def self.objects
@objects ||= begin
# some logic that builds an array, which is ultimately stored in @objects
end
end
end
¿Es posible que @objects
podría fijarse varias veces? ¿Es posible que durante una solicitud, al ejecutar el código entre begin
/end
anterior, este método se pueda invocar durante una segunda solicitud? Esto realmente se reduce a una cuestión de cómo se bifurcan las instancias del servidor de Rails, supongo.
¿Debo utilizar una Mutex
o una sincronización de subprocesos? e.g .:
class Something
def self.objects
return @objects if @objects
Thread.exclusive do
@objects ||= begin
# some logic that builds an array, which is ultimately stored in @objects
end
end
end
end
a preguntar Yehuda pesando en –