| Class | Sequel::ConnectionPool |
| In: |
lib/sequel/connection_pool.rb
|
| Parent: | Object |
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. |
| 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. |
| OPTS | = | Sequel::OPTS |
| POOL_CLASS_MAP | = | { :threaded => :ThreadedConnectionPool, :single => :SingleConnectionPool, :sharded_threaded => :ShardedThreadedConnectionPool, :sharded_single => :ShardedSingleConnectionPool |
| 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. |
| connect_sqls | [RW] | An array of sql strings to execute on each new connection. |
| db | [RW] | The Sequel::Database object tied to this connection pool. |
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. |
| :preconnect : | Automatically create the maximum number of connections, so that they don‘t need to be created as needed. This is useful when connecting takes a long time and you want to avoid possible latency during runtime. Set to :concurrently to create the connections in separate threads. Otherwise they‘ll be created sequentially. |
# File lib/sequel/connection_pool.rb, line 98
98: def initialize(db, opts=OPTS)
99: @db = db
100: @after_connect = opts[:after_connect]
101: @connect_sqls = opts[:connect_sqls]
102: @error_classes = db.send(:database_error_classes).dup.freeze
103: end