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