Мне необходимо получить/обновить/удалить данные во внешней базе, никак не относящийся к базе самого приложения. Необходимо к ней обращаться из кода. Подскажите, где это все оформить, инициализация подключения, CRUD операции. Предполагаю, что в модели. Может есть какой-то пример, как лучше всего это написать?
Есть несколько возможных решений.
На уровне ActiveRecordМожно выдумать ключ, под которым будут храниться реквизиты удалённой базы данных, например, external, и внести их в database.yml:
external:
adapter: mysql
host: example.com
...
...а в модели указать ActiveRecord обращаться именно к той базе:
class Model < ActiveRecord::Base
establish_connection :external
end
...а можно указать реквизиты прямо в аргументах establish_connection хэшмапом, но хранить их лучше в файле конфигурации на ваш выбор. database.yml, если вы его не коммитите, неплохой выбор. И вообще, вот документация к establish_connection.
MySQL имеет движок хранения FEDERATED, который делегирует хранение данных другому MySQL-серверу. Сначала этот движок необходимо включить на уровне сервера БД, а затем создать таблицу-отражение прямо в базе приложения.
Rails даже не нужно будет знать о том, что данные на самом деле где-то далеко.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей