class ConnectionHandler

Ruby on Rails edge

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.11.3 v5.0.7.2 v5.1.7 v5.2.8.1 v6.0.6.1 v6.1.7.10 v7.0.10 v7.1.6 v7.2.4 v8.0.5.1 v8.1.4 edge

Active Record Connection Handler

ConnectionHandler is a collection of ConnectionPool objects. It is used for keeping separate connection pools that connect to different databases.

For example, suppose that you have 5 models, with the following hierarchy:

“‘ class Author < ActiveRecord::Base end

class BankAccount < ActiveRecord::Base end

class Book < ActiveRecord::Base

establish_connection :library_db

end

class ScaryBook < Book end

class GoodBook < Book end “‘

And a database.yml that looked like this:

“‘ development:

database: my_application
host: localhost

library_db:

database: library
host: some.library.org

“‘

Your primary database in the development environment is “my_application” but the Book model connects to a separate database called “library_db” (this can even be a database on a different machine).

Book, ScaryBook, and GoodBook will all use the same connection pool to “library_db” while Author, BankAccount, and any other models you create will use the default connection pool to “my_application”.

The various connection pools are managed by a single instance of ConnectionHandler accessible via ActiveRecord::Base.connection_handler. All Active Record models use this handler to determine the connection pool that they should use.

The ConnectionHandler class is not coupled with the Active models, as it has no knowledge about the model. The model needs to pass a connection specification name to the handler, in order to look up the correct connection pool.

Inherits from

Object

Attributes

Methods (defined here)

Private methods (6)

Show private methods Implementation detail — not part of the public API.

Methods (inherited)

From Object (17)
From ActiveSupport::NumericWithFormat (2)

Type at least 2 characters to search.

Use the arrow keys to navigate results, Enter to open one, Escape to close.

Keyboard shortcuts

/
Focus search
⌘K / Ctrl-K
Command palette
?
This help
Esc
Close