class method
self.new
Ruby on Rails 3.1.12
Since v2.2.3Signature
self.new(spec)
Creates a new ConnectionPool object. spec is a ConnectionSpecification object which describes database connection information (e.g. adapter, host name, username, password, etc), as well as the maximum size for this ConnectionPool.
The default ConnectionPool maximum size is 5.
Parameters
-
specreq
Source
# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb, line 71
def initialize(spec)
@spec = spec
# The cache of reserved connections mapped to threads
@reserved_connections = {}
# The mutex used to synchronize pool access
@connection_mutex = Monitor.new
@queue = @connection_mutex.new_cond
@timeout = spec.config[:wait_timeout] || 5
# default max pool size to 5
@size = (spec.config[:pool] && spec.config[:pool].to_i) || 5
@connections = []
@checked_out = []
@automatic_reconnect = true
@tables = {}
@visitor = nil
@columns = Hash.new do |h, table_name|
h[table_name] = with_connection do |conn|
# Fetch a list of columns
conn.columns(table_name, "#{table_name} Columns").tap do |columns|
# set primary key information
columns.each do |column|
column.primary = column.name == primary_keys[table_name]
end
end
end
end
@columns_hash = Hash.new do |h, table_name|
h[table_name] = Hash[columns[table_name].map { |col|
[col.name, col]
}]
end
@column_defaults = Hash.new do |h, table_name|
h[table_name] = Hash[columns[table_name].map { |col|
[col.name, col.default]
}]
end
@primary_keys = Hash.new do |h, table_name|
h[table_name] = with_connection do |conn|
table_exists?(table_name) ? conn.primary_key(table_name) : 'id'
end
end
end
Defined in activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb line 71
· View on GitHub
· Improve this page
· Find usages on GitHub