The base connection pool class, which all other connection pools are based on. This class is not instantiated directly, but subclasses should at the very least implement the following API:
- initialize(Database, Hash)
-
Initialize using the passed Sequel::Database object and options hash.
- hold(Symbol, &block)
-
Yield a connection object (obtained from calling the block passed to
initialize
) to the current block. For sharded connection pools, the Symbol passed is the shard/server to use. - disconnect(Symbol)
-
Disconnect the connection object. For sharded connection pools, the Symbol passed is the shard/server to use.
- servers
-
An array of shard/server symbols for all shards/servers that this connection pool recognizes.
- size
-
an integer representing the total number of connections in the pool, or for the given shard/server if sharding is supported.
For sharded connection pools, the sharded API adds the following methods:
Classes and Modules
Constants
CONNECTION_POOL_MAP | = | {[true, false] => :single, [true, true] => :sharded_single, [false, false] => :threaded, [false, true] => :sharded_threaded} |
A map of [single threaded, sharded] values to symbols or ConnectionPool subclasses. |
|
DEFAULT_SERVER | = | :default |
The default server to use |
|
OPTS | = | Sequel::OPTS |
Attributes
after_connect | [RW] |
The #after_connect proc used for this pool. This is called with each new connection made, and is usually used to set custom per-connection settings. |
db | [RW] |
The Sequel::Database object tied to this connection pool. |
Public Class methods
Instantiates a connection pool with the given options. The block is called with a single symbol (specifying the server/shard to use) every time a new connection is needed. The following options are respected for all connection pools:
- :#after_connect
-
The proc called after each new connection is made, with the connection object, useful for customizations that you want to apply to all connections.
# File lib/sequel/connection_pool.rb, line 75 def initialize(db, opts=OPTS) @db = db @after_connect = opts[:after_connect] end
Public Instance methods
Alias for size
, not aliased directly for ease of subclass
implementation
# File lib/sequel/connection_pool.rb, line 81 def created_count(*args) size(*args) end
An array of symbols for all shards/servers, which is a single
:default
by default.
# File lib/sequel/connection_pool.rb, line 86 def servers [DEFAULT_SERVER] end