Utilizzo di singleton mixin da rails Potrei creare una classe singleton nell'ambito dell'applicazione rails. Ma mi stavo chiedendo c'è un modo per crearlo nell'ambito di una particolare richiesta?Singleton nell'ambito di una richiesta in rotaie
8
A
risposta
7
Dal momento che la richiesta è legata a un filo, è possibile utilizzare Thread
local negozio:
class RequestSingleton
def self.instance
Thread.current['request-singleton'] ||= RequestSingleton.new
end
def self.clear
Thread.current['request-singleton'] = nil
end
end
Usage:
def index
RequestSingleton.instance.do_some_setup
# ...
RequestSingleton.clear
end
... e in qualsiasi altro luogo semplicemente utilizzare RequestSingleton.instance
per accedervi.
Poiché è thread locale, non ci sono problemi di sincronizzazione.