deploy.rb
Try Rails 5 on a production server in 30 mins
Зыкин Илья
github.com/the-teacher
Доклад состоит из 2 частей
2
Доклад состоит из 2 частей
1. Первая часть
3
Доклад состоит из 2 частей
1. Первая часть

2. Вторая часть
4
5
Здорова, пацаны!
Можно ехать!
Ну, давай, давай …
удачи …
6
Ребят,

Rails 5
зарелизился
еще

сыроват
мигрируем, не?
на-до про-то-тип
7
Не понимаю
Capistrano
Redis для ActionCable?
Надо пройти
2-х годичные

экспресс курсы
Надо было на
Joomla делать
Мам! Мам! На проде 500-ка
Цель
Помочь людям поскорее попробовать Rails 5

Сократить время на запуск прототипа

и демо стенда

8
Основная задача
Обеспечить запуск Rails 5 приложения на
production сервере не более чем за 30 минут

9
Решение
Прототип Rails 5 приложения

• ActionCable

• Redis

• Sidekiq

• Sphinx

• Whenever

• Devise

• Kaminari
10
Решение
Быстро создать сервер и установить ПО
11
Решение
Обеспечить простой деплой
12
О проекте
Демонстрационный пример полного жизненного
цикла Rails 5 приложения от rails new до deploy.

open-source проект для образовательных и
демонстрационных целей.

13
deployrb.github.io
Граничные условия
1. Простая инфраструктура. ALL IN ONE.

1 сервер
14
Граничные условия
1. Простая инфраструктура. ALL IN ONE.

1 сервер

2. Production-like сервер на простом
хостинге / VDS / VPS
15
Граничные условия
1. Простая инфраструктура. ALL IN ONE.

1 сервер

2. Production-like сервер на простом
хостинге / VDS / VPS

3. Простота реализации
16
Результат
1. Прототип Rails приложения
17
Результат
1. Прототип Rails приложения

2. Скрипт установки сервера и
руководство
18
Результат
1. Прототип Rails приложения

2. Скрипт установки сервера и
руководство

3. RUBY скрипт автоматизирующий
процесс деплоя в стиле Capistrano
19
20
deployrb.github.io
Попробуй Rails 5 в production
уже через 30 минут!
21
Нюр, эта ля
дЯплой?
Это Жаваскрипт!
Вябсокяты!
Деревня!
ОПЫТ, СЫН ОШИБОК ТРУДНЫХ
22
“Configuration of Rails 5 applications is the
greatest problem facing the world today!”

— D. T.
23
Типичные конфигурационные файлы
1.application.rb

2.environments/

3.initializers/

4.database.yml

5.secrets.yml

6.spring.rb
24
Типичные конфигурационные файлы
25
1.redis.config

2.schedule.rb

3.sidekiq.yml

4.thinking_sphinx.yml

….
Новые конфигурационные файлы
1.cable.yml

2.puma.rb

3.initializers/
application_controller_renderer.rb

4.assets/config/manifest.js
26
application_controller_renderer.rb
27
WebSockets + NignX
28
broadcast / render
29
broadcast / render
30
31
Deploy Tool
Deploy Tool
Capistrano

Недостаточно подходит для демонстрационных нужд

Целая экосистема модулей

Большой уровень сложности (DSL, Before/After hooks)
32
Deploy Tool
Chef / Puppet

Явный overkill в рамках данной задачи. Не подходит для
демонстрационных нужд.
33
Deploy Tool
Ansible

Очень привлекательный вариант с системой
конфигурирования и шаблонизацией из коробки

Не руби
34
Deploy Tool
35
Deploy Tool
1. Централизованное управление конфигурацией деплоя
через YML файлы.

2. Шаблонизация ERB

3. Копирование файла на сервер SCP

4. Обращение к серверу по SSH

5. Выполнение простых операций на сервере:

создание каталогов, клонирование проекта, линковка
файлов и каталогов и перезапуск сервисов.
36
SSH helper
37
Thinking Sphinx Start / Stop
38
39
40
DEPLOY_ENV=production ruby deploy.rb
Bonus
41
kaminari. Issue #804 (fixed)
42
Проблема в SLIM и HAML
Bundler. Issue #4966 (fixed)
bundler 1.11.2 — bundler 1.13.2 

43
44
deployrb.github.io
Попробуй Rails 5 в production
уже через 30 минут!
Q & A
45
Спасибо!
46

Deploy.rb, Ilya Zykin, Rails club2016