модуль ActiveRecord::ConnectionHandling
Константы
- DEFAULT_ENV
- RAILS_ENV
Общедоступные методы экземпляра
Возвращает true если Active Record подключён.
# File activerecord/lib/active_record/connection_handling.rb, line 117 def connected? connection_handler.connected?(self) end
Возвращает подключение, в настоящее время связанное с классом. Его также можно использовать, чтобы «взять» подключение для выполнения работы с базой данных, не связанной ни с одним конкретным Active Record.
# File activerecord/lib/active_record/connection_handling.rb, line 86 def connection retrieve_connection end
Возвращает конфигурацию связанного подключения в виде хэша:
ActiveRecord::Base.connection_config
# => {pool: 5, timeout: 5000, database: "db/development.sqlite3", adapter: "sqlite3"}
Пожалуйста, используйте только для чтения.
# File activerecord/lib/active_record/connection_handling.rb, line 104 def connection_config connection_pool.spec.config end
# File activerecord/lib/active_record/connection_handling.rb, line 90 def connection_id ActiveRecord::RuntimeRegistry.connection_id end
# File activerecord/lib/active_record/connection_handling.rb, line 94 def connection_id=(connection_id) ActiveRecord::RuntimeRegistry.connection_id = connection_id end
# File activerecord/lib/active_record/connection_handling.rb, line 108 def connection_pool connection_handler.retrieve_connection_pool(self) or raise ConnectionNotEstablished end
Устанавливает подключение к базе данных. Принимает хэш в качестве входных данных, где ключ :adapter должен быть указан с именем адаптера базы данных (в нижнем регистре), например, для обычных баз данных (MySQL, Postgresql и т.д.):
ActiveRecord::Base.establish_connection( adapter: "mysql", 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 и ArgumentError.
# 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 # File activerecord/lib/active_record/connection_handling.rb, line 121 def remove_connection(klass = self) connection_handler.remove_connection(klass) end
# File activerecord/lib/active_record/connection_handling.rb, line 112 def retrieve_connection connection_handler.retrieve_connection(self) end
© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.