Как использовать PostgreSQL с приложением Ruby On Rails
Несмотря на то, что база данных SQLite3 по умолчанию прекрасно работает с Ruby on Rails, в некоторых случаях нам не следует ее использовать. Например, если к вашему приложению Rails одновременно обращается большое количество пользователей, SQLite не рекомендуется. Нам следует попробовать более надежные базы данных, такие как MySQL или PostgreSQL, которые обеспечивают масштабируемость, параллелизм, централизацию и контроль. Мы уже знали, как использовать MySQL с приложением Rails. Сегодня мы увидим, как использовать PostgreSQL с приложением Ruby on Rails в Ubuntu Linux.
Предварительные условия
Я предполагаю, что вы уже установили последнюю версию Ruby on Rails в своей системе Linux. Если нет, обратитесь к следующему руководству.
- Как установить Ruby On Rails в Linux
1. Установите PostgreSQL
Чтобы установить PostgreSQL в Debian, Ubuntu и их производных, запустите:
sudo apt install postgresql postgresql-contrib libpq-dev
Эта команда установит PostgreSQL вместе со всеми необходимыми зависимостями. Здесь libpq-dev
— это библиотека PostgreSQL, которая позволяет клиентским программам передавать запросы на внутренний сервер PostgreSQL и получать результаты этих запросов. Эта библиотека необходима для подключения к PostgreSQL при настройке приложения Rails.
Убедитесь, что служба postgresql запущена и включена при запуске:
sudo systemctl start postgresql
sudo systemctl enable postgresql
Чтобы просмотреть текущий статус службы postgresql, запустите:
systemctl status postgresql
1.1. Создать новую роль базы данных
Нам нужен выделенный пользователь (роль) базы данных для создания и настройки баз данных или нашего приложения Rails.
Чтобы создать новую роль базы данных в PostgreSQL, выполните следующую команду из своего терминала:
sudo -u postgres createuser -s ostechnix -P
Здесь,
sudo -u postgres
— позволяет запустить команду из учетной записиpostgres
.createuser -s ostechnix
— создайте новую роль с именемostechnix
с привилегиями суперпользователя.-P
— предлагает ввести пароль для новой роли.
2. Используйте PostgreSQL с приложением Ruby on Rails в Linux.
Чтобы создать новое приложение Rails под названием ostechnixapp
и использовать PostgreSQL в качестве базы данных по умолчанию, запустите:
rails new ostechnixapp -d postgresql
Это создаст приложение Rails с именем ostechnixapp
в каталоге с именем ostechnixapp
и установит зависимости Gem, которые уже упомянуты в Gemfile
, используя bundle. установить
.
После создания приложения ostechnixapp
переключитесь в его каталог:
cd ostechnixapp/
Отредактируйте файл конфигурации базы данных приложения:
vi config/database.yml
В разделе default
добавьте роль базы данных PosgreSQL и ее пароль, который мы создали на предыдущем шаге:
[...]
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# https://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: ostechnix
password: Password123#@!
[...]
Установите пользователя PostgreSQL и его пароль в файле конфигурации базы данных приложения Rails.
Замените имя пользователя и его пароль на свои собственные. Нажмите ESC
и введите :wq
, чтобы сохранить и закрыть файл.
Теперь создайте новую базу данных для вашего приложения Rails, используя команду:
rake db:create
Это создаст две базы данных с именем вашего приложения Rails. Например, если имя приложения — ostechnixapp, оно создаст ostechnixapp_development
и ostechnixapp_test
.
Created database 'ostechnixapp_development'
Created database 'ostechnixapp_test'
Вы можете убедиться в этом, если базы данных также успешно созданы из PosgreSQL.
Войдите в PosgreSQL:
sudo -u postgres psql
В командной строке postgresql запустите \l
, чтобы просмотреть список доступных баз данных:
postgres=# \l
Пример вывода:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
--------------------------+-----------+----------+---------+---------+-----------------------
ostechnixapp_development | ostechnix | UTF8 | C.UTF-8 | C.UTF-8 |
ostechnixapp_test | ostechnix | UTF8 | C.UTF-8 | C.UTF-8 |
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(5 rows)
postgres=#
Используйте PostgreSQL с приложением Ruby on Rails
Выйдите из командной строки PostgreSQL, введя \q
.
postgres=# \q
Теперь запустите веб-сервер Rails с помощью команды:
rails server -b 0.0.0.0
Это запустит ваше приложение Rails на порту по умолчанию 3000
. Здесь мы передали аргумент -b 0.0.0.0
, чтобы получить доступ к приложению Rails с любого компьютера в локальной сети.
Откройте веб-браузер и откройте тестовую страницу Rails, перейдя по URL-адресу: http://ip-address:3000
.
Тестовая страница приложения Ruby on Rails
Если вы хотите использовать другой порт, передайте флаг -p вместе с номером порта, как показано ниже:
rails server -b 0.0.0.0 -p 8080
Теперь к приложению Rails можно получить доступ по этому URL-адресу: http://ip-address:8080
.
3. Удалить приложение Rails
Если вы использовали базу данных по умолчанию — SQLite, вы можете удалить приложение Rails, просто удалив каталог его приложения.
rm -fr ostechnixapp
Если вы использовали PostgreSQL, сначала вам нужно удалить связанные базы данных вашего приложения с помощью команды:
rake db:drop
А затем удалите каталог приложения:
rm -fr ostechnixapp
Заключение
Теперь вы знаете, как создать приложение Rails с PostgreSQL в качестве базы данных. Как я уже упоминал, если ваше приложение активно используется большим количеством пользователей, вам необходимо использовать PostgreSQL или MySQL. Это также может быть полезно, если вы захотите масштабировать базу данных в будущем, управлять своей базой данных из удаленной системы.
Связанное чтение:
- Настройка подключения к базе данных с использованием переменной среды в Rails