123456789_123456789_123456789_123456789_123456789_

Module: ActiveRecord::ConnectionHandling

Constant Summary

Instance Attribute Summary

Instance Method Summary

Instance Attribute Details

#connected?Boolean (readonly)

Returns true if Active Record is connected.

[ GitHub ]

  
# 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.

[ GitHub ]

  
# 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.

[ GitHub ]

  
# 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.

[ GitHub ]

  
# 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