Развёртывание приложения на Ruby on Rails

Ruby on Rails (RoR) — фреймворк, написанный на языке программирования Ruby, реализует архитектурный шаблон Model-View-Controller для веб-приложений, а также обеспечивает их интеграцию с веб-сервером и сервером баз данных.


Базовая поддержка Ruby стала доступна вместе с Ruby-селектором на всех тарифных планах на новых серверах (пожалуйста, о наличии ruby-селектора на вашем сервере уточняйте у специалистов технической поддержки).

Расширенная поддержка доступна на тарифном плане “Профи” (а также архивных тарифах "Типовой+" и "Интернет-проект"). Она позволяет устанавливать Ruby-модули, которые содержат в себе компоненты, написанные на С/C++ и компилирующиеся в процессе установки (например, гемы nokogiri и mysql2). Для работы большинства современных веб-приложений на языке Ruby, в частности, написанных на RoR, требуется именно тарифный план с доступом к компилятору.

В данной статье рассмотрим пример настройки популярного веб-приложения Redmine, использующего Ruby on Rails версии 5.2.3, на тарифах с расширенной поддержкой Ruby версии 2.6. Для иных версий действия могут незначительно отличаться.

1. В панели управления хостингом (сPanel) выбираем в разделе "Программное обеспечение" пункт "Настройка Ruby приложений":
rubi1.png

2. Выбираем нужную версию Ruby, директорию, в которой будут располагаться файлы приложения, а также URL, по которому приложение будет доступно, нажимаем на кнопку “Setup”:
rubi2.png
3. Размещаем файлы Redmine в указанную при создании приложения директорию любым удобным образом. При этому учтите, что уже имеющиеся директории являются системными и требуются для корректной работы приложения, поэтому дистрибутив следует загружать поверх, с перезаписью имеющихся файлов, но без их удаления.

4. В сPanel в пункте "Мастер баз данных MySQL" раздела "Базы данных" создаем новую базу данных, пользователя к ней, выдаём пользователю права:
rubi3.png
5. Заходим на сервер по SSH, и после авторизации выполняем команду активации виртуального окружения, которая указана на странице настройки приложения над кнопками управления:
rubi4.png
В результате перед строкой приглашения появится название виртуального окружения (redmine:2.6):
rubi5.png 
6. Переходим в каталог config внутри приложения командой 
cd redmine/config

7. Копируем шаблон файла настройки баз данных командой
cp database.yml.example database.yml

8. В файле database.yml указываем параметры подключения к базе данных, которую создавали в пункте 4:
rubi7.png 
9. Возвращаемся в корневой каталог приложения командой 
cd ~/redmine

10. Выполняем установку базовых гемов, с помощью которых будет развёрнуто приложение, командой
gem install bundle bundler mysql2
rubi8.png
11. Выполняем установку оставшихся требуемых гемов из файла Gemfile через Bundler командой
~/rubyvenv/redmine/2.6/bin/bundle install

12. В базовой поставке Redmine отсутствует файл manifest.js, требуемый для запуска приложения (в вашем другом приложении на RoR указанный файл может уже присутствовать, тогда этот шаг можно пропустить), создадим пустой следующей командой:
mkdir -p app/assets/config/ && touch app/assets/config/manifest.js

13. Выполняем настройку хранения секретов приложения в production среде командой
RAILS_ENV=production ~/rubyvenv/redmine/2.6/bin/bundle exec rails credentials:edit

14. Выполняем миграцию базы данных:
RAILS_ENV=production ~/rubyvenv/redmine/2.6/bin/bundle exec rake db:migrate

15. Перезапускаем приложение из cPanel:
rubi8.png
Приложение доступно по URL, указанному при установке:
rubi10.png