class Kameleon::Ext::Capybara::SessionPool

Attributes

nice[W]

Public Class Methods

release_all() click to toggle source
# File lib/kameleon/ext/capybara/session_pool.rb, line 17
def release_all
  idle.concat(busy)
  busy.clear
end
session(driver, name = :default) click to toggle source
# File lib/kameleon/ext/capybara/session_pool.rb, line 11
def session(driver, name = :default)
  (take_idle(driver) || create(driver)).tap do |session|
    attach_to_capybara_session_pool(driver, name, session)
  end
end

Protected Class Methods

attach_to_capybara_session_pool(driver, name, session) click to toggle source
# File lib/kameleon/ext/capybara/session_pool.rb, line 52
def attach_to_capybara_session_pool(driver, name, session)
  capybara_session_pool["#{driver}:#{name}:#{::Capybara.app.object_id}"] = session
end
busy() click to toggle source
# File lib/kameleon/ext/capybara/session_pool.rb, line 28
def busy
  @busy ||= []
end
capybara_session_pool() click to toggle source
# File lib/kameleon/ext/capybara/session_pool.rb, line 56
def capybara_session_pool
  ::Capybara.send(:session_pool)
end
create(driver) click to toggle source
# File lib/kameleon/ext/capybara/session_pool.rb, line 46
def create(driver)
  ::Capybara::Session.new(driver, ::Capybara.app).tap do |session|
    busy.push(session)
  end
end
find_idle(driver) click to toggle source
# File lib/kameleon/ext/capybara/session_pool.rb, line 42
def find_idle(driver)
  idle.detect { |session| session.mode == driver }
end
idle() click to toggle source
# File lib/kameleon/ext/capybara/session_pool.rb, line 24
def idle
  @idle ||= []
end
take_idle(driver) click to toggle source
# File lib/kameleon/ext/capybara/session_pool.rb, line 32
def take_idle(driver)
  if session = find_idle(driver)
    session.reset!
    session.tap do |s|
      idle.delete(s)
      busy.push(s)
    end
  end
end