instance method retrieve_connection_pool

Ruby on Rails 8.0.4

Since v2.2.3

Available in: v2.2.3 v2.3.18 v3.0.20 v3.1.12 v3.2.22.5 v4.0.13 v4.1.16 v4.2.9 v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

retrieve_connection_pool(connection_name, role: ActiveRecord::Base.current_role, shard: ActiveRecord::Base.current_shard, strict: false)

Retrieving the connection pool happens a lot, so we cache it in @connection_name_to_pool_manager. This makes retrieving the connection pool O(1) once the process is warm. When a connection is established or removed, we invalidate the cache.

Parameters

connection_name req
role key = ActiveRecord::Base.current_role
shard key = ActiveRecord::Base.current_shard
strict key = false
Source
# File activerecord/lib/active_record/connection_adapters/abstract/connection_handler.rb, line 214
      def retrieve_connection_pool(connection_name, role: ActiveRecord::Base.current_role, shard: ActiveRecord::Base.current_shard, strict: false)
        pool_manager = get_pool_manager(connection_name)
        pool = pool_manager&.get_pool_config(role, shard)&.pool

        if strict && !pool
          selector = [
            ("'#{shard}' shard" unless shard == ActiveRecord::Base.default_shard),
            ("'#{role}' role" unless role == ActiveRecord::Base.default_role),
          ].compact.join(" and ")

          selector = [
            (connection_name unless connection_name == "ActiveRecord::Base"),
            selector.presence,
          ].compact.join(" with ")

          selector = " for #{selector}" if selector.present?

          message = "No database connection defined#{selector}."

          raise ConnectionNotDefined.new(message, connection_name: connection_name, shard: shard, role: role)
        end

        pool
      end

Defined in activerecord/lib/active_record/connection_adapters/abstract/connection_handler.rb line 214 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveRecord::ConnectionAdapters::ConnectionHandler

Type at least 2 characters to search.

↑↓ navigate · open · esc close