модуль ActiveRecord::ConnectionHandling
Постоянные значения
- DEFAULT_ENV
- RAILS_ENV
Атрибуты
Публичные методы экземпляров
# File activerecord/lib/active_record/connection_handling.rb, line 122 def connected? connection_handler.connected?(connection_specification_name) end
Возвращает true, если Active Record подключен.
# File activerecord/lib/active_record/connection_handling.rb, line 89 def connection retrieve_connection end
Возвращает подключение, в настоящее время связанное с классом. Его также можно использовать для «одолжения» подключения, чтобы выполнить работу с базой данных, не связанную с конкретными Active Records.
# File activerecord/lib/active_record/connection_handling.rb, line 109 def connection_config connection_pool.spec.config end
Возвращает конфигурацию связанного подключения в виде хэша:
ActiveRecord::Base.connection_config
# => {pool: 5, timeout: 5000, database: "db/development.sqlite3", adapter: "sqlite3"}
Пожалуйста, используйте только для чтения.
# File activerecord/lib/active_record/connection_handling.rb, line 113 def connection_pool connection_handler.retrieve_connection_pool(connection_specification_name) || raise(ConnectionNotEstablished) end
# 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
end Возвращает имя спецификации подключения из текущего класса или его родительского класса.
# 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) end
Устанавливает подключение к базе данных. Принимает хэш в качестве входных данных, где ключ adapter должен быть указан с именем адаптера базы данных (в нижнем регистре). Пример для обычных баз данных (MySQL, PostgreSQL и т. д.):
ActiveRecord::Base.establish_connection( adapter: "mysql2", host: "localhost", username: "myuser", password: "mypass", database: "somedatabase" )
Пример для базы данных SQLite:
ActiveRecord::Base.establish_connection( adapter: "sqlite3", database: "path/to/dbfile" )
Также принимает ключи в виде строк (например, для парсинга из YAML):
ActiveRecord::Base.establish_connection( "adapter" => "sqlite3", "database" => "path/to/dbfile" )
Или URL:
ActiveRecord::Base.establish_connection( "postgres://myuser:mypass@localhost/somedatabase" )
В случае, если ActiveRecord::Base.configurations задано (Rails автоматически загружает содержимое config/database.yml в него), в качестве аргумента также можно указать символ, представляющий ключ в хэше конфигурации:
ActiveRecord::Base.establish_connection(:production)
В случае ошибки могут быть возвращены исключения AdapterNotSpecified, AdapterNotFound и DatabaseException.
# 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)
end # File activerecord/lib/active_record/connection_handling.rb, line 117 def retrieve_connection connection_handler.retrieve_connection(connection_specification_name) end
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.