Sha256: 34d44b5950374c1b87d8167543a09d25cc3ede301e852bae9b5f7dc44b75be40
Contents?: true
Size: 969 Bytes
Versions: 25
Compression:
Stored size: 969 Bytes
Contents
require 'singleton' module Mongo class Client alias :get_session_without_tracking :get_session def get_session(options = {}) get_session_without_tracking(options).tap do |session| SessionRegistry.instance.register(session) end end end class Session alias :end_session_without_tracking :end_session def end_session SessionRegistry.instance.unregister(self) end_session_without_tracking end end end class SessionRegistry include Singleton def initialize @registry = {} end def register(session) @registry[session.session_id] = session if session end def unregister(session) @registry.delete(session.session_id) end def verify_sessions_ended! unless @registry.empty? sessions = @registry.map { |_, session| session } raise "Session registry contains live sessions: #{sessions.join(', ')}" end end def clear_registry @registry = {} end end
Version data entries
25 entries across 25 versions & 2 rubygems