module Sequel::ConnectionPool::ClassMethods

Class methods used to return an appropriate pool subclass, separated into a module for easier overridding by extensions.

Public Instance Methods

get_pool(db, opts = OPTS) click to toggle source

Return a pool subclass instance based on the given options. If a :pool_class option is provided is provided, use that pool class, otherwise use a new instance of an appropriate pool subclass based on the :single_threaded and :servers options.

   # File lib/sequel/connection_pool.rb
43 def get_pool(db, opts = OPTS)
44   connection_pool_class(opts).new(db, opts)
45 end

Private Instance Methods

connection_pool_class(opts) click to toggle source

Return a connection pool class based on the given options.

   # File lib/sequel/connection_pool.rb
50 def connection_pool_class(opts)
51   if pc = opts[:pool_class]
52     unless pc.is_a?(Class)
53       unless name = POOL_CLASS_MAP[pc]
54         raise Sequel::Error, "unsupported connection pool type, please pass appropriate class as the :pool_class option"
55       end
56 
57       require_relative "connection_pool/#{pc}"
58       pc = Sequel.const_get(name)
59     end
60 
61     pc
62   else
63     pc = if opts[:single_threaded]
64       opts[:servers] ? :sharded_single : :single
65     else
66       opts[:servers] ? :sharded_threaded : :threaded
67     end
68 
69     connection_pool_class(:pool_class=>pc)
70   end
71 end