Поиск по сайту:

Как использовать MySQL с приложением Ruby On Rails


Ruby on Rails использует SQLite3 в качестве базы данных по умолчанию. Хотя Sqlite прекрасно работает с Rails, иногда его может быть недостаточно для вашего приложения Rails. Если вам нужны масштабируемость, параллелизм, централизация и контроль, вы можете попробовать более надежные базы данных, такие как MySQL или PostgreSQL. В этом руководстве мы увидим, как использовать MySQL с приложением Ruby on Rails в Ubuntu Linux.

1. Установите MySQL в Ubuntu

MySQL доступен в репозиториях по умолчанию большинства Linux и Unix-подобных дистрибутивов.

Чтобы установить MySQL в Debian, Ubuntu и их производных, запустите:

sudo apt install mysql-server mysql-client libmysqlclient-dev

Пакет libmysqlclient-dev предоставляет необходимые файлы для компиляции гема mysql2. Ruby on Rails использует гем mysql2 для подключения к MySQL при настройке приложения Rails.

1.1. Настройка root-пароля MySQL

Затем настройте пароль пользователя root MySQL, выполнив следующую команду:

sudo mysql_secure_installation

Введите "y", чтобы настроить компонент ПРОВЕРИТЬ ПАРОЛЬ:

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y

Выберите уровень проверки пароля. Доступные проверки пароля: низкая, средняя и сильная. Здесь я выбираю проверку пароля низкого уровня, вводя ноль (0).

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0

Затем дважды введите пароль MySQL Root. Пароль должен быть надежным и содержать минимум 8 символов. Нажмите Y, чтобы продолжить:

Please set the password for root here.

New password:

Re-enter new password:

Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

Далее вам будет задан ряд вопросов. Введите y и нажмите Enter для каждого вопроса. Это приведет к удалению анонимного пользователя, запрету удаленного входа в систему пользователя root и удалению тестовой базы данных.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.

- Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

Сделанный! Мы установили пароль пользователя root MySQL.

1.2. Установите драйвер MySQL

Установите драйвер MySQL с именем mysql2, который позволяет приложению Rails подключаться к базе данных MySQL.

gem install mysql2

Все сделано! Приложения Rails теперь могут подключаться к серверу базы данных MySQL.

Давайте двинемся дальше и создадим новое приложение Rails с базой данных MySQL.

2. Используйте MySQL с приложением Ruby on Rails.

Чтобы создать новое приложение Rails под названием ostechnixapp и использовать базу данных MySQL в качестве базы данных по умолчанию, запустите:

rails new ostechnixapp -d mysql

Это создаст приложение Rails под названием ostechnixapp в каталоге с именем ostechnixapp и установит зависимости gem, которые уже упомянуты в Gemfile, с помощью bundle install.

После создания приложения ostechnixapp переключитесь в его каталог:

cd ostechnixapp/

Отредактируйте файл конфигурации базы данных приложения:

vi config/database.yml

В разделе по умолчанию замените пароль пользователя MySQL root на тот, который вы создали ранее:

[...]
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: Password123#@!
socket: /var/run/mysqld/mysqld.sock
[...]

Установите пароль root MySQL в файле конфигурации базы данных приложения Rails.

Сохраните и закройте файл.

Теперь создайте новую базу данных для вашего приложения Rails, используя команду:

rake db:create

Это создаст две базы данных с именем вашего приложения Rails. Например, если имя приложения — ostechnixapp, оно создаст ostechnixapp_development и ostechnixapp_test.

Вы можете проверить это, если базы данных также успешно созданы из MySQL.

Войдите в MySQL как пользователь root:

mysql -u root -p

Проверьте, созданы ли базы данных, введя следующую команду:

mysql> show databases;

Пример вывода:

+--------------------------+
 | Database                 |
 +--------------------------+
 | information_schema       |
 | mysql                    |
 | ostechnixapp_development |
 | ostechnixapp_test        |
 | performance_schema       |
 | sys                      |
 +--------------------------+
 6 rows in set (0.01 sec)
 mysql> 

Используйте MySQL с приложением Ruby on Rails

Выйдите из командной строки MySQL.

Теперь запустите веб-сервер 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

Если вы использовали MySQL, сначала вам нужно удалить связанные базы данных вашего приложения с помощью команды:

rake db:drop

А затем удалите каталог приложения:

rm -fr ostechnixapp

Заключение

В этом руководстве мы обсудили, почему нам нужно использовать базы данных модели клиент/сервер для нашего приложения Rails и как создать приложение Rails с базой данных MySQL. Мы также увидели, как удалить приложение Rails.

Если несколько копий приложения Rails работают одновременно, несколько приложений и пользователей используют одну и ту же базу данных, вам следует отойти от Sqlite и попробовать базы данных модели клиент/сервер, такие как MySQL. Если вам нужно локальное хранилище данных для отдельных приложений, Sqlite более чем достаточно.

Связанное чтение:

  • Как использовать PostgreSQL с приложением Ruby On Rails
  • Настройка подключения к базе данных с использованием переменной среды в Rails