使用rails中的singleton mixin我可以在rails app的范围内创建一个单例类。但我想知道是否有办法在特定请求的范围内创建它?
答案 0 :(得分:7)
由于请求与线程相关联,因此您可以使用Thread
local store:
class RequestSingleton
def self.instance
Thread.current['request-singleton'] ||= RequestSingleton.new
end
def self.clear
Thread.current['request-singleton'] = nil
end
end
用法:
def index
RequestSingleton.instance.do_some_setup
# ...
RequestSingleton.clear
end
......以及其他任何地方只需使用RequestSingleton.instance
即可访问它。
由于它是本地线程,因此没有同步问题。