Slide 1

Slide 1 text

Ruby Web Dev: The Other Way Євген Кузьмінов, MobiDev Чи є життя поза Ruby on Rails ?

Slide 2

Slide 2 text

http://rwdtow.stdout.in

Slide 3

Slide 3 text

Чому не “The Right Way” ? Його не існує

Slide 4

Slide 4 text

10+ PR на GitHub, $15 роялті на LeanPub

Slide 5

Slide 5 text

Пошкоджена екосистема ● Підсвідоме почуття ● Спротив до змін і підлаштувань ● Образ мислення розробників ● Неосяжні зусилля, щоб “виростити” супротивника RoR ● Без плюралізму та реального перезастосування коду ● Потрібне розуміння кожного окремого компонента

Slide 6

Slide 6 text

Впізнаєте Rails чи ні? Наприклад, Array ● first ● second ● last ● second_to_last ● third_to_last ● forty_two

Slide 7

Slide 7 text

Маніфест ● Перевага простим рішенням, а не легким ● Конфігурація замість плутанини, а не конвенція замість конфігурації ● Повторюй код, а не сподіватися на магію

Slide 8

Slide 8 text

Стек моєї мрії, для покращення слиновиділення :) ● Linux + RubyMine ● PostgreSQL, Redis ● Hanami.rb ● Trailblazer ● Dependency Injection Container ● Minitest + Capybara ● Vue.js + ES6/WebPack ● Docker

Slide 9

Slide 9 text

Хіба в Rails є проблеми? ● ActiveRecord та бизнес логика ● Before action ● HTML helpers ● Constants autoloading ● Конфігурація у 3-4 способи ● ...

Slide 10

Slide 10 text

Чи є альтернатива Rails? ● Свій Rake застосунок ● Мікрофреймворк: Sinatra, Roda, dry-web ● Спеціалізоване рішення: Grape ● Hanami.rb (колишній Lotus) Але фреймворк це лише частина вашого застосунку!

Slide 11

Slide 11 text

Архітектура ● MVC - ще не архітектура в шірокому сенсі ● “Товста” модель, “худий” контролер - не має різниці ● SOLID - не срібная пуля ● Може TRUE ?

Slide 12

Slide 12 text

Хто надихає мене в архітектурі веб застосунків? Sandi Metz Nick Sutterer

Slide 13

Slide 13 text

Що ж таке “TRUE” від Sandi Metz З книги “Practical Object-Oriented Design in Ruby: An Agile Primer” ● Transparent - зміна кода несе передбачувані наслідки ● Reasonable - маленькі зміни у бізнес вимогах, потребують маленькі зміни в коді ● Usable - існуючий код легко перезастосовувати у непередбаченному зазделегідь контексті ● Exemplary - найлегший спосіб внести змінити, це додати код, що у свою чергу такий же простий (як той, що вже існує)

Slide 14

Slide 14 text

Уявімо автомобіль

Slide 15

Slide 15 text

За ФОРМОЮ, автомобиль це

Slide 16

Slide 16 text

Але СУТЬ автомобиля це

Slide 17

Slide 17 text

А де суть вашого Rails застосунку?

Slide 18

Slide 18 text

The Clean Architecture від Uncle Bob

Slide 19

Slide 19 text

Як реалізувати це в Ruby? ● Active Interactor (https://github.com/orgsync/active_interaction) ● Rectify (https://github.com/andypike/rectify) ● Trailblazer (http://trailblazer.to/) HTTP => Controller (redirecting, rendering, etc) Data Input => Form Object (validation, acceptable input) Business Logic => Command (logic for a specific use case) Data Persistence => Model (relationships between models) Data Access => Query Object (database queries) View Logic => Presenter (formatting data)

Slide 20

Slide 20 text

Trailblazer

Slide 21

Slide 21 text

Питання до мене?