Module: ActiveRecord::ConnectionHandling
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Extended In:
| |
Defined in: | activerecord/lib/active_record/connection_handling.rb, activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb, activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb |
Constant Summary
-
DEFAULT_ENV =
# File 'activerecord/lib/active_record/connection_handling.rb', line 4#=> { RAILS_ENV.call || "default_env" }
-
RAILS_ENV =
# File 'activerecord/lib/active_record/connection_handling.rb', line 3#=> { (Rails.env if defined?(Rails.env)) || ENV["RAILS_ENV"] || ENV["RACK_ENV"] }
Instance Attribute Summary
-
#connected? ⇒ Boolean
readonly
Returns
true
if Active Record is connected. - #connection_id rw
- #connection_id=(connection_id) rw
Instance Method Summary
- #clear_active_connections!
- #clear_all_connections!
- #clear_reloadable_connections!
-
#connection
Returns the connection currently associated with the class.
-
#connection_config
Returns the configuration of the associated connection as a hash:
- #connection_pool
-
#establish_connection(spec = nil)
Establishes the connection to the database.
- #remove_connection(klass = self)
- #retrieve_connection
Instance Attribute Details
#connected? ⇒ Boolean
(readonly)
Returns true
if Active Record is connected.
# File 'activerecord/lib/active_record/connection_handling.rb', line 117
def connected? connection_handler.connected?(self) end
#connection_id (rw)
[ GitHub ]# File 'activerecord/lib/active_record/connection_handling.rb', line 90
def connection_id ActiveRecord::RuntimeRegistry.connection_id end
#connection_id=(connection_id) (rw)
[ GitHub ]# File 'activerecord/lib/active_record/connection_handling.rb', line 94
def connection_id=(connection_id) ActiveRecord::RuntimeRegistry.connection_id = connection_id end
Instance Method Details
#clear_active_connections!
[ GitHub ]# File 'activerecord/lib/active_record/connection_handling.rb', line 129
delegate :clear_active_connections!, :clear_reloadable_connections!, :clear_all_connections!, :to => :connection_handler
#clear_all_connections!
[ GitHub ]# File 'activerecord/lib/active_record/connection_handling.rb', line 129
delegate :clear_active_connections!, :clear_reloadable_connections!, :clear_all_connections!, :to => :connection_handler
#clear_reloadable_connections!
[ GitHub ]# File 'activerecord/lib/active_record/connection_handling.rb', line 129
delegate :clear_active_connections!, :clear_reloadable_connections!, :clear_all_connections!, :to => :connection_handler
#connection
Returns the connection currently associated with the class. This can also be used to “borrow” the connection to do database work unrelated to any of the specific Active Records.
# File 'activerecord/lib/active_record/connection_handling.rb', line 86
def connection retrieve_connection end
#connection_config
Returns the configuration of the associated connection as a hash:
ActiveRecord::Base.connection_config
# => {pool: 5, timeout: 5000, database: "db/development.sqlite3", adapter: "sqlite3"}
Please use only for reading.
# File 'activerecord/lib/active_record/connection_handling.rb', line 104
def connection_config connection_pool.spec.config end
#connection_pool
[ GitHub ]# File 'activerecord/lib/active_record/connection_handling.rb', line 108
def connection_pool connection_handler.retrieve_connection_pool(self) or raise ConnectionNotEstablished end
#establish_connection(spec = nil)
Establishes the connection to the database. Accepts a hash as input where the :adapter
key must be specified with the name of a database adapter (in lower-case) example for regular databases (MySQL, Postgresql, etc):
ActiveRecord::Base.establish_connection(
adapter: "mysql",
host: "localhost",
username: "myuser",
password: "mypass",
database: "somedatabase"
)
Example for SQLite database:
ActiveRecord::Base.establish_connection(
adapter: "sqlite3",
database: "path/to/dbfile"
)
Also accepts keys as strings (for parsing from YAML for example):
ActiveRecord::Base.establish_connection(
"adapter" => "sqlite3",
"database" => "path/to/dbfile"
)
Or a URL:
ActiveRecord::Base.establish_connection(
"postgres://myuser:mypass@localhost/somedatabase"
)
In case Base.configurations is set (Rails automatically loads the contents of config/database.yml into it), a symbol can also be given as argument, representing a key in the configuration hash:
ActiveRecord::Base.establish_connection(:production)
The exceptions AdapterNotSpecified, AdapterNotFound and ArgumentError may be returned on an error.
# File 'activerecord/lib/active_record/connection_handling.rb', line 47
def establish_connection(spec = nil) spec ||= DEFAULT_ENV.call.to_sym resolver = ConnectionAdapters::ConnectionSpecification::Resolver.new configurations spec = resolver.spec(spec) unless respond_to?(spec.adapter_method) raise AdapterNotFound, "database configuration specifies nonexistent #{spec.config[:adapter]} adapter" end remove_connection connection_handler.establish_connection self, spec end
#remove_connection(klass = self)
[ GitHub ]# File 'activerecord/lib/active_record/connection_handling.rb', line 121
def remove_connection(klass = self) connection_handler.remove_connection(klass) end
#retrieve_connection
[ GitHub ]# File 'activerecord/lib/active_record/connection_handling.rb', line 112
def retrieve_connection connection_handler.retrieve_connection(self) end