2014-07-24 9 views

Antwort

7

Da eine Anfrage an einen Faden gebunden ist, können Sie Thread local Speicher verwenden:

class RequestSingleton 
    def self.instance 
    Thread.current['request-singleton'] ||= RequestSingleton.new 
    end 

    def self.clear 
    Thread.current['request-singleton'] = nil 
    end 
end 

Verbrauch:

def index 
    RequestSingleton.instance.do_some_setup 

    # ... 

    RequestSingleton.clear 
end 

... und anderswo einfach RequestSingleton.instance verwenden, darauf zuzugreifen.

Da es Thread lokal ist, gibt es keine Synchronisierungsprobleme.

Verwandte Themen