在rails中请求范围内的单例
使用rails中的singleton mixin我可以在rails app的范围内创建一个单例类。 但我想知道有没有办法在特定请求的范围内创建它?
由于请求与线程绑定,因此可以使用Thread
本地存储:
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
即可访问它。
由于它是本地线程,因此没有同步问题。