Returns true if Active Record is connected.
# File activerecord/lib/active_record/connection_handling.rb, line 132 def connected? connection_handler.connected?(connection_specification_name) 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 90 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 119 def connection_config connection_pool.spec.config end
# File activerecord/lib/active_record/connection_handling.rb, line 105 def connection_id ActiveRecord::RuntimeRegistry.connection_id ||= Thread.current.object_id end
# File activerecord/lib/active_record/connection_handling.rb, line 109 def connection_id=(connection_id) ActiveRecord::RuntimeRegistry.connection_id = connection_id end
# File activerecord/lib/active_record/connection_handling.rb, line 123 def connection_pool connection_handler.retrieve_connection_pool(connection_specification_name) or raise ConnectionNotEstablished end
Return the specification id from this class otherwise look it up in the parent.
# File activerecord/lib/active_record/connection_handling.rb, line 98
def connection_specification_name
if !defined?(@connection_specification_name) || @connection_specification_name.nil?
return self == Base ? "primary" : superclass.connection_specification_name
end
@connection_specification_name
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: "mysql2", 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)
raise RuntimeError, "Anonymous class is not allowed." unless name
spec ||= DEFAULT_ENV.call.to_sym
resolver = ConnectionAdapters::ConnectionSpecification::Resolver.new configurations
# TODO: uses name on establish_connection, for backwards compatibility
spec = resolver.spec(spec, self == Base ? "primary" : name)
unless respond_to?(spec.adapter_method)
raise AdapterNotFound, "database configuration specifies nonexistent #{spec.config[:adapter]} adapter"
end
remove_connection(spec.name)
self.connection_specification_name = spec.name
connection_handler.establish_connection spec
end # File activerecord/lib/active_record/connection_handling.rb, line 136
def remove_connection(name = nil)
name ||= @connection_specification_name if defined?(@connection_specification_name)
# if removing a connection that have a pool, we reset the
# connection_specification_name so it will use the parent
# pool.
if connection_handler.retrieve_connection_pool(name)
self.connection_specification_name = nil
end
connection_handler.remove_connection(name)
end # File activerecord/lib/active_record/connection_handling.rb, line 127 def retrieve_connection connection_handler.retrieve_connection(connection_specification_name) end
© 2004–2017 David Heinemeier Hansson
Licensed under the MIT License.