
Узнайте, как использовать PostgreSQL в приложении Ruby on Rails вместо базы данных SQLite, установленной по умолчанию. SQLite — это простой в настройке, легкий продукт, который поставляется с Ruby on Rails по умолчанию. Однако PostgreSQL — это более надежное решение, которое обеспечивает более продвинутые функции, масштабирование и стабильность, что может сделать его более подходящим для вашего проекта Ruby on Rails.
Требования
- Облачный сервер под управлением Linux (Ubuntu 16.04).
- Установленный и запущенный PostgreSQL.
- Установленный и запущенный Ruby on Rails.
- Базовое знакомство с Ruby on Rails.
Все команды в этом руководстве должны выполняться от имени пользователя Rails. Это учетная запись пользователя, которую вы использовали для установки и запуска Ruby on Rails.
Создание пользователя PostgreSQL
Создайте пользователя PostgreSQL, чтобы ваше приложение Ruby on Rails могло подключаться к базе данных PostgreSQL:
sudo -u postgres createuser -s [username]
Это должно быть то же имя пользователя, которое вы использовали для установки и запуска Ruby on Rails.
Например, чтобы создать имя пользователя PostgreSQL jdoe, выполните следующую команду:
sudo -u postgres createuser -s jdoe
Чтобы установить пароль для этого пользователя, войдите в клиент командной строки PostgreSQL:
sudo -u postgres psql
В приглашении PostgreSQL введите следующую команду для установки пароля:
password [username]
Например, для установки пароля для jdoe команда выглядит следующим образом:
password jdoe
Введите и подтвердите пароль. Затем выйдите из клиента PostgreSQL:
q
Настройка Rails-приложения
Следующим шагом будет включение поддержки PostgreSQL в вашем приложении Ruby on Rails.
Создайте приложение
Сначала создайте приложение, используя флаг -d postgresql:
rails new [application name] -d postgresql
Например, команда для создания приложения с именем my-app имеет следующий вид:
rails new my-app -d postgresql
Флаг -d сообщает Ruby on Rails, что вы будете использовать PostgreSQL для этого приложения.
Добавьте имя пользователя и пароль PostgreSQL
Затем перейдите в каталог, который Ruby on Rails создал для приложения:
cd my-app
Отредактируйте файл config/database.yml:
nano config/database.yml
Прокрутите вниз до раздела, который гласит:
# The specified database role being used to connect to postgres.
# To create additional roles in postgres see `$ createuser --help`.
# When left blank, postgres will use the default role. This is
# the same name as the operating system user that initialized the database.
#username: my-app2
Удалите # в последней строке, чтобы снять комментарий, и измените имя пользователя на то, которое вы создали:
# The specified database role being used to connect to postgres.
# To create additional roles in postgres see `$ createuser --help`.
# When left blank, postgres will use the default role. This is
# the same name as the operating system user that initialized the database.
username: jdoe
В следующем разделе удалите #, чтобы снять комментарий с последней строки, и добавьте пароль для пользователя jdoe:
# The password associated with the postgres role (username).
password: XPmMxZf
Сохраните и выйдите из файла.
Создание новых баз данных приложения
Используйте следующую команду rake для создания баз данных для вашего приложения:
rake db:create
Протестируйте конфигурацию
Чтобы протестировать конфигурацию, просто запустите приложение rails и проверьте его в браузере.
Из каталога приложения используйте команду:
bin/rails s --binding=0.0.0.0
Привязка сервера к 0.0.0.0 позволяет просматривать приложение, используя публичный IP-адрес вашего сервера.
Сервер должен ответить:
[user@localhost my-app]$ bin/rails server
=> Booting Puma
=> Rails 5.0.0.1 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.6.0 (ruby 2.3.1-p112), codename: Sleepy Sunday Serenity
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
Переключитесь на браузер и посетите сайт «http://your-ip-address:3000». Например, если ваш IP-адрес 198.162.0.1, вы перейдете на http://198.162.0:3000.
Если все в порядке и Rails смог подключиться к PostgreSQL, вы увидите стандартную приветственную страницу Rails.
