Module: ActiveRecord::ConnectionAdapters

Extended by:
ActiveSupport::Autoload
Defined in:
activerecord/lib/active_record/connection_adapters/column.rb,
activerecord/lib/active_record/connection_adapters.rb,
activerecord/lib/active_record/connection_adapters/pool_config.rb,
activerecord/lib/active_record/connection_adapters/deduplicable.rb,
activerecord/lib/active_record/connection_adapters/mysql/column.rb,
activerecord/lib/active_record/connection_adapters/pool_manager.rb,
activerecord/lib/active_record/connection_adapters/schema_cache.rb,
activerecord/lib/active_record/connection_adapters/mysql/quoting.rb,
activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid.rb,
activerecord/lib/active_record/connection_adapters/sqlite3/column.rb,
activerecord/lib/active_record/connection_adapters/statement_pool.rb,
activerecord/lib/active_record/connection_adapters/sqlite3/quoting.rb,
activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb,
activerecord/lib/active_record/connection_adapters/trilogy_adapter.rb,
activerecord/lib/active_record/connection_adapters/abstract/quoting.rb,
activerecord/lib/active_record/connection_adapters/abstract_adapter.rb,
activerecord/lib/active_record/connection_adapters/postgresql/utils.rb,
activerecord/lib/active_record/connection_adapters/postgresql/column.rb,
activerecord/lib/active_record/connection_adapters/sql_type_metadata.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/bit.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/oid.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/xml.rb,
activerecord/lib/active_record/connection_adapters/postgresql/quoting.rb,
activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb,
activerecord/lib/active_record/connection_adapters/abstract/savepoints.rb,
activerecord/lib/active_record/connection_adapters/mysql/schema_dumper.rb,
activerecord/lib/active_record/connection_adapters/mysql/type_metadata.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/cidr.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/date.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/enum.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/inet.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/uuid.rb,
activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb,
activerecord/lib/active_record/connection_adapters/abstract/transaction.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/bytea.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/jsonb.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/money.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/point.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/range.rb,
activerecord/lib/active_record/connection_adapters/mysql/schema_creation.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/hstore.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/vector.rb,
activerecord/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb,
activerecord/lib/active_record/connection_adapters/abstract/schema_dumper.rb,
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/decimal.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/macaddr.rb,
activerecord/lib/active_record/connection_adapters/mysql/schema_statements.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/interval.rb,
activerecord/lib/active_record/connection_adapters/sqlite3/schema_creation.rb,
activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb,
activerecord/lib/active_record/connection_adapters/abstract/database_limits.rb,
activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rb,
activerecord/lib/active_record/connection_adapters/mysql/schema_definitions.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/date_time.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/timestamp.rb,
activerecord/lib/active_record/connection_adapters/postgresql/schema_dumper.rb,
activerecord/lib/active_record/connection_adapters/postgresql/type_metadata.rb,
activerecord/lib/active_record/connection_adapters/mysql/database_statements.rb,
activerecord/lib/active_record/connection_adapters/sqlite3/schema_statements.rb,
activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb,
activerecord/lib/active_record/connection_adapters/mysql2/database_statements.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/bit_varying.rb,
activerecord/lib/active_record/connection_adapters/postgresql/schema_creation.rb,
activerecord/lib/active_record/connection_adapters/sqlite3/schema_definitions.rb,
activerecord/lib/active_record/connection_adapters/abstract/connection_handler.rb,
activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/legacy_point.rb,
activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb,
activerecord/lib/active_record/connection_adapters/trilogy/database_statements.rb,
activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb,
activerecord/lib/active_record/connection_adapters/mysql/explain_pretty_printer.rb,
activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb,
activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb,
activerecord/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb,
activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb,
activerecord/lib/active_record/connection_adapters/sqlite3/explain_pretty_printer.rb,
activerecord/lib/active_record/connection_adapters/abstract/connection_pool/reaper.rb,
activerecord/lib/active_record/connection_adapters/postgresql/referential_integrity.rb,
activerecord/lib/active_record/connection_adapters/postgresql/explain_pretty_printer.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/specialized_string.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb,
activerecord/lib/active_record/connection_adapters/postgresql/oid/timestamp_with_time_zone.rb

Overview

:nodoc:

Defined Under Namespace

Modules: AbstractPool, ColumnMethods, DatabaseLimits, DatabaseStatements, Deduplicable, MySQL, Mysql2, PostgreSQL, QueryCache, Quoting, SQLite3, Savepoints, SchemaStatements, Trilogy Classes: AbstractAdapter, AbstractMysqlAdapter, AddColumnDefinition, AlterTable, BoundSchemaReflection, ChangeColumnDefaultDefinition, ChangeColumnDefinition, CheckConstraintDefinition, Column, ColumnDefinition, ConnectionHandler, ConnectionPool, CreateIndexDefinition, ForeignKeyDefinition, IndexDefinition, Mysql2Adapter, NullColumn, NullPool, NullTransaction, PoolConfig, PoolManager, PostgreSQLAdapter, PrimaryKeyDefinition, RealTransaction, ReferenceDefinition, RestartParentTransaction, SQLite3Adapter, SavepointTransaction, SchemaCache, SchemaCreation, SchemaDumper, SchemaReflection, SqlTypeMetadata, StatementPool, Table, TableDefinition, Transaction, TransactionInstrumenter, TransactionManager, TransactionState, TrilogyAdapter

Constant Summary collapse

PostgreSQLColumn =

:nodoc:

PostgreSQL::Column
PostgreSQLTypeMetadata =
PostgreSQL::

Class Method Summary collapse

Methods included from ActiveSupport::Autoload

autoload, autoload_at, autoload_under, eager_autoload, eager_load!

Class Method Details

.register(name, class_name, path = class_name.underscore) ⇒ Object

Registers a custom database adapter.

Can also be used to define aliases.

Example

ActiveRecord::ConnectionAdapters.register("megadb", "MegaDB::ActiveRecordAdapter", "mega_db/active_record_adapter")

ActiveRecord::ConnectionAdapters.register("mysql", "ActiveRecord::ConnectionAdapters::TrilogyAdapter", "active_record/connection_adapters/trilogy_adapter")


22
23
24
# File 'activerecord/lib/active_record/connection_adapters.rb', line 22

def register(name, class_name, path = class_name.underscore)
  @adapters[name.to_s] = [class_name, path]
end

.resolve(adapter_name) ⇒ Object

:nodoc:



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'activerecord/lib/active_record/connection_adapters.rb', line 26

def resolve(adapter_name) # :nodoc:
  # Require the adapter itself and give useful feedback about
  #   1. Missing adapter gems.
  #   2. Incorrectly registered adapters.
  #   3. Adapter gems' missing dependencies.
  class_name, path_to_adapter = @adapters[adapter_name.to_s]

  unless class_name
    raise AdapterNotFound, "      Database configuration specifies nonexistent '\#{adapter_name}' adapter.\n      Available adapters are: \#{@adapters.keys.sort.join(\", \")}.\n      Ensure that the adapter is spelled correctly in config/database.yml and that you've added the necessary\n      adapter gem to your Gemfile if it's not in the list of available adapters.\n    MSG\n  end\n\n  unless Object.const_defined?(class_name)\n    begin\n      require path_to_adapter\n    rescue LoadError => error\n      # We couldn't require the adapter itself.\n      if error.path == path_to_adapter\n        # We can assume here that a non-builtin adapter was specified and the path\n        # registered by the adapter gem is incorrect.\n        raise LoadError, \"Error loading the '\#{adapter_name}' Active Record adapter. Ensure that the path registered by the adapter gem is correct. \#{error.message}\", error.backtrace\n      else\n        # Bubbled up from the adapter require. Prefix the exception message\n        # with some guidance about how to address it and reraise.\n        raise LoadError, \"Error loading the '\#{adapter_name}' Active Record adapter. Missing a gem it depends on? \#{error.message}\", error.backtrace\n      end\n    end\n  end\n\n  begin\n    Object.const_get(class_name)\n  rescue NameError => error\n    raise AdapterNotFound, \"Could not load the \#{class_name} Active Record adapter (\#{error.message}).\"\n  end\nend\n".squish