12 Ноя

Соединение с несколькими БД с использованием ActiveRecord

В общем, с Ruby у меня пошло как-то получше, чем ранее с python’ом и фреймворком Yii2.
Смотрю тут всякие видеоуроки, читаю книги, уже немного фигачу всякие мелочи с использованием Sinatra и ActiveRecord.
Вот понадобилось тут из одного приложения создавать подключения к нескольким базам данных. Искал всякие варианты — ничего толком не нашел. Там вроде можно как-то конфиги указывать в database.yml, но у меня не получилось. Зато получилось вот так:
для начал нам потребуется собственно сам activerecord

в файле app.rb — основной файл приложения Sinatra, — прописываем следующее:

require 'rubygems'
require 'sinatra'
require 'sinatra/activerecord'

ActiveRecord::Base.configurations["mysql1"] = {
:adapter => "mysql2",
:host => "localhost",
:username => "username",
:password => "userpassword",
:database => "databasename",
:encoding => "utf8"
}

ActiveRecord::Base.configurations["mysql2"] = {
:adapter => "mysql2",
:host => "localhost",
:username => "username",
:password => "userpassword",
:database => "oher_databasename",
:encoding => "utf8"
}

А далее в коде при создании класса с нашей моделью прописываем вот так:

class Table1 < ActiveRecord::Base
establish_connection "mysql1"
end

class Table2 < ActiveRecord::Base
establish_connection "mysql2"
end

Вот и всё. После этого у меня приложение заработало нормально.

Немного позже напишу ещё о том, как подключиться к базе MSSQL из синатры (если, конечно, получится).