Methods
- connected?
- connection
- connection_config
- connection_pool
- connection_specification_name
- establish_connection
- remove_connection
- retrieve_connection
Constants
| DEFAULT_ENV | = | -> { RAILS_ENV.call || "default_env" } | 
| RAILS_ENV | = | -> { (Rails.env if defined?(Rails.env)) || ENV["RAILS_ENV"].presence || ENV["RACK_ENV"].presence } | 
Attributes
| [W] | connection_specification_name | 
Instance Public methods
connected?()
Returns true if Active Record is connected.
π Source code
# File activerecord/lib/active_record/connection_handling.rb, line 122
    def connected?
      connection_handler.connected?(connection_specification_name)
    endconnection()
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.
π Source code
# File activerecord/lib/active_record/connection_handling.rb, line 89
    def connection
      retrieve_connection
    endconnection_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.
π Source code
# File activerecord/lib/active_record/connection_handling.rb, line 109
    def connection_config
      connection_pool.spec.config
    endconnection_pool()
π Source code
# File activerecord/lib/active_record/connection_handling.rb, line 113
    def connection_pool
      connection_handler.retrieve_connection_pool(connection_specification_name) || raise(ConnectionNotEstablished)
    endconnection_specification_name()
Return the specification name from the current class or its parent.
π Source code
# File activerecord/lib/active_record/connection_handling.rb, line 96
    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
    endestablish_connection(config = 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:  "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.
π Source code
# File activerecord/lib/active_record/connection_handling.rb, line 49
    def establish_connection(config = nil)
      raise "Anonymous class is not allowed." unless name
      config ||= DEFAULT_ENV.call.to_sym
      spec_name = self == Base ? "primary" : name
      self.connection_specification_name = spec_name
      resolver = ConnectionAdapters::ConnectionSpecification::Resolver.new(Base.configurations)
      spec = resolver.resolve(config).symbolize_keys
      spec[:name] = spec_name
      connection_handler.establish_connection(spec)
    endremove_connection(name = nil)
π Source code
# File activerecord/lib/active_record/connection_handling.rb, line 126
    def remove_connection(name = nil)
      name ||= @connection_specification_name if defined?(@connection_specification_name)
      # if removing a connection that has 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)
    endretrieve_connection()
π Source code
# File activerecord/lib/active_record/connection_handling.rb, line 117
    def retrieve_connection
      connection_handler.retrieve_connection(connection_specification_name)
    end