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 |
hold(Symbol, &block) |
Yield a connection object (obtained from calling the block passed to |
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. |
max_size |
an integer representing the maximum size of the connection pool, or the maximum size per shard/server if sharding is supported. |
For sharded connection pools, the sharded API adds the following methods:
add_servers(Array of Symbols) |
start recognizing all shards/servers specified by the array of symbols. |
remove_servers(Array of Symbols) |
no longer recognize all shards/servers specified by the array of symbols. |
Classes and Modules
Constants
OPTS | = | Sequel::OPTS | ||
POOL_CLASS_MAP | = | { :threaded => :ThreadedConnectionPool, :single => :SingleConnectionPool, :sharded_threaded => :ShardedThreadedConnectionPool, :sharded_single => :ShardedSingleConnectionPool }.freeze |
Attributes
after_connect | [RW] |
The |
connect_sqls | [RW] |
An array of sql strings to execute on each new connection. |
db | [RW] |
The |
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 |
A callable object called after each new connection is made, with the connection object (and server argument if the callable accepts 2 arguments), useful for customizations that you want to apply to all connections. |
:connect_sqls |
An array of sql strings to execute on each new connection, after :after_connect runs. |
# File lib/sequel/connection_pool.rb 93 def initialize(db, opts=OPTS) 94 @db = db 95 @after_connect = opts[:after_connect] 96 @connect_sqls = opts[:connect_sqls] 97 @error_classes = db.send(:database_error_classes).dup.freeze 98 end
Public Instance methods
An array of symbols for all shards/servers, which is a single :default
by default.
# File lib/sequel/connection_pool.rb 101 def servers 102 [:default] 103 end