Блог веб-студии RubyRuby

Здесь мы делимся нашим опытом.

Деплой Ruby on Rails проектов через веб-интерфейc

Зачастую, перед разработчиками RoR встает необходимость централизованного деплоя приложения на продакшн сервер. Конечно, на помощь приходит мощное средство capistrano, но оно не позволяет вести историю деплоев, что бывает необходимо в командах c достаточно большим количеством разработчиков. Ниже будет рассмотрен процесс настройки веб-приложения, которое позволяет упростить эту задачу и сделать выкатку новой версии в «два клика».

Нам потребуется приложение, код которого находится на github.com. Процесс настройки capistrano опустим, в сети много примеров как это делается.

Итак, забираем код:

1
git clone git@github.com:joelmoss/strano.git

также, можно воспользоваться форком от компании Express42, где sidekiq заменен на старый добрый resque.

Подготавливаем файл database.yml и размещаем его в директории config. Переходим в директорию strano и запускаем script/bootstrap. Скрипт практически все сделает за нас. Скорее всего, при установке джемов могут возникнуть ошибки, связанные с отсутствием определенных хедеров в системе. В моем случае было необходимо: 1) прописать gem ‘pg’ в Gemfile, потому как использую я postgresql 2) для успешного бандлинга выполнить команду:

1
gem install debugger-ruby_core_source

Проверим, что все работает:

1
bundle exec rails s.

Самое время перейти к конфигурированию нашего инструмента. Для этого скопируем файл config/strano.example.yml в config/strano.yml. Здесь нам необходимо указать всего три переменные: 1) публичный ключ машины, где мы развернули наш инструмент деплоя (public_ssh_key) 2) клиентский идентификатор приложения и его секретный ключ на github.com: github_key и github_secret соответственно. Для получения последних двух параметров необходимо создать приложение на гитхабе, указав там домен, где будет расположен ваш веб-интерфейс.

Самым сердцем нашего инструмента будет фоновый воркер, который собственно и будет запускать все задачи. Запустим его:

1
bundle exec sidekiq

На этом настройка закончена. Стоит лишь сказать, что не лишним будет закрыть basic_auth`ом домен деплоилки, потому как аутентификация производится через github и мне не удалось заставить работать strano для ограничения лиц, которым приложение должно давать доступ.

Воспользоваться плодами наших трудов очень просто: для этого необходимо авторизоваться, создать проект и указать путь до репозитория. Придется подождать, пока склонируется проект и произойдет установка джемов. Далее необходимо создать нужные таски. На мой взгляд, деплой, выполнение rake тасков и выполнение кода из консоли rails — достаточный набор задач для большинства повседневных нужд.

Заказать сайт на Ruby on Rails

Комментарии