On this page
module ActiveRecord::ConnectionHandling
Constants
- DEFAULT_ENV
- RAILS_ENV
Public Instance Methods
Returns true
if Active Record is connected.
# File activerecord/lib/active_record/connection_handling.rb, line 117
def connected?
connection_handler.connected?(self)
end
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
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
# File activerecord/lib/active_record/connection_handling.rb, line 90
def connection_id
ActiveRecord::RuntimeRegistry.connection_id
end
# File activerecord/lib/active_record/connection_handling.rb, line 94
def connection_id=(connection_id)
ActiveRecord::RuntimeRegistry.connection_id = connection_id
end
# File activerecord/lib/active_record/connection_handling.rb, line 108
def connection_pool
connection_handler.retrieve_connection_pool(self) or raise ConnectionNotEstablished
end
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 ActiveRecord::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
# File activerecord/lib/active_record/connection_handling.rb, line 121
def remove_connection(klass = self)
connection_handler.remove_connection(klass)
end
# File activerecord/lib/active_record/connection_handling.rb, line 112
def retrieve_connection
connection_handler.retrieve_connection(self)
end
© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.