По умолчанию Ruby on Rails использует sqlite3 в качестве системы управления базами данных (СУБД). Но иногда эта СУБД недостаточно производительна и не справляется с объёмными приложениями. Потому если приложение нуждается в масштабировании или централизации, рекомендуется использовать базу данных SQL (например, PostgreSQL или MySQL).
Данное руководство поможет настроить окружение разработки Ruby on Rails для использования PostgreSQL на сервере Ubuntu 14.04, включая установку и настройку PostgreSQL, а также создание приложения rails, использующего PostgreSQL в качестве сервера баз данных.
Требования
Для выполнения руководства нужна среда разработки Ruby on Rails. Чтобы получить инструкции по созданию такого окружения, читайте это руководство.
Кроме того, понадобится учётная запись пользователя с доступом к sudo.
Установка PostgreSQL
Установите систему управления базами данных PostgreSQL, если она не была установлена ранее.
Обновите список пакетов:
sudo apt-get update
Установите PostgreSQL и зависимые библиотеки СУБД:
sudo apt-get install postgresql postgresql-contrib libpq-dev
Система PostgreSQL установлена на сервер. Теперь нужно создать отдельного пользователя для приложения Rails.
Создание пользователя PostgreSQL
Чтобы создать суперпользователя PostgreSQL, введите команду:
sudo -u postgres createuser -s pguser
Примечание: Замените условное имя pguser именем своего пользователя.
Чтобы защитить новую учётную запись паролем, откройте консоль PostgreSQL:
sudo -u postgres psql
Консоль PostgreSQL определяется командной строкой:
postgres=#
Теперь введите эту команду, чтобы установить пароль для пользователя БД:
\password pguser
Выберите пароль и введите его в командную строку.
Закройте консоль PostgreSQL:
\q
Теперь можно приступать к созданию Rails-приложения.
Создание Rails-приложения
Создайте новое приложение Rails в домашнем каталоге. Используйте опцию -d postgresql, чтобы задать PostgreSQL как БД приложения. Не забудьте заменить условные данные руководства своими данными:
cd ~
rails new appname -d postgresql
Откройте каталог проекта:
cd appname
Теперь нужно настроить взаимодействие приложения с БД PostgreSQL.
Настройка подключения к PostgreSQL
Ранее созданный пользователь PostgreSQL будет использован программой для создания тестовой БД и БД разработки (test и development соответственно). Необходимо настроить соответствующие параметры базы данных для взаимодействия с приложением.
Откройте конфигурационный файл БД приложения:
vi config/database.yml
В разделе default найдите строку pool: 5 и добавьте после неё следующие строки. После этого файл будет иметь такой вид:
host: localhost
username: pguser
password: pguser_password
Примечание: Замените условные данные своими.
Сохраните и закройте файл.
Создание баз данных приложения
Теперь создайте базы данных development и test, выполнив команду:
rake db:create
Эта команда создаст две базы данных на сервере PostgreSQL. К примеру, если приложение называется appname, она создаст базы данных appname_development и appname_test.
При возникновении ошибки вернитесь к предыдущему разделу руководства и убедитесь, что в файле database.yml параметры host, username и password указаны правильно. Затем попробуйте создать базы данных снова.
Тестирование
Попробуйте запустить приложение, чтобы убедиться, что настройка выполнена правильно.
Чтобы запустить стандартное окружение разработки, введите команду:
rails server
Это запустит Rails-приложение на порт 3000 локального хоста.
Если приложение Rails находится на удалённом сервере и вы хотите получить к нему доступ в браузере, привяжите его к внешнему IP-адресу сервера. Сначала узнайте внешний IP-адрес сервера, а затем используйте следующую команду:
rails server --binding=внешний_IP_сервера
Теперь приложение доступно в браузере по следующей ссылке:
http://внешний_IP_сервера:3000
Если на экране появилась страница Welcome aboard, значит, настройка выполнена правильно, всё работает должным образом.
Заключение
Теперь можно приступать к разработке приложения Ruby on Rails на основе производительной БД PostgreSQL, используя тестовое приложение в качестве шаблона.