Module: Mongoid::Sessions

Defined in:
lib/mongoid_connection_pool/mongoid/sessions.rb,
lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb

Defined Under Namespace

Classes: SessionPool

Class Method Summary collapse

Class Method Details

.defaultObject



29
30
31
# File 'lib/mongoid_connection_pool/mongoid/sessions.rb', line 29

def default
  with_name(:default)
end

.disconnect(thread = Thread.current) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/mongoid_connection_pool/mongoid/sessions.rb', line 16

def disconnect(thread=Thread.current)
  synchronize do
    @session_pool.try(:each) do |name, pool|
      if thread
        pool.session_for(thread).try(:disconnect)
      else
        pool.sessions.try(:each) { |session| session.disconnect }
      end
    end
  end
  true
end

.session_pool(name = :default) ⇒ Object



11
12
13
14
# File 'lib/mongoid_connection_pool/mongoid/sessions.rb', line 11

def session_pool(name=:default)
  synchronize { @session_pool ||= ThreadSafe::Cache.new }
  @session_pool.fetch(name) { build_session_pool(name) }
end

.synchronize(&block) ⇒ Object



6
7
8
9
# File 'lib/mongoid_connection_pool/mongoid/sessions.rb', line 6

def synchronize(&block)
  @lock ||= Mutex.new
  @lock.synchronize(&block)
end

.with_name(name) ⇒ Object



33
34
35
36
# File 'lib/mongoid_connection_pool/mongoid/sessions.rb', line 33

def with_name(name)
  session_pool(name).session_for(Thread.current) ||
    session_pool(name).checkout
end

.with_session(name = :default) ⇒ Object



38
39
40
41
42
# File 'lib/mongoid_connection_pool/mongoid/sessions.rb', line 38

def with_session(name=:default)
  yield
ensure
  reap_current_session(name)
end