Ruby Web Dev: The Other Way. Architecture aspects

Ruby Web Dev: The Other Way. Architecture aspects

MobiDev Meetup 30.11.2016

Ac3e162318c73347bef4d20b1bb7f7f3?s=128

Yevhen "Eugene" Kuzminov

November 30, 2016
Tweet

Transcript

  1. Ruby Web Dev: The Other Way Євген Кузьмінов, MobiDev Чи

    є життя поза Ruby on Rails ?
  2. http://rwdtow.stdout.in

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

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

  5. Пошкоджена екосистема • Підсвідоме почуття • Спротив до змін і

    підлаштувань • Образ мислення розробників • Неосяжні зусилля, щоб “виростити” супротивника RoR • Без плюралізму та реального перезастосування коду • Потрібне розуміння кожного окремого компонента
  6. Впізнаєте Rails чи ні? Наприклад, Array • first • second

    • last • second_to_last • third_to_last • forty_two
  7. Маніфест • Перевага простим рішенням, а не легким • Конфігурація

    замість плутанини, а не конвенція замість конфігурації • Повторюй код, а не сподіватися на магію
  8. Стек моєї мрії, для покращення слиновиділення :) • Linux +

    RubyMine • PostgreSQL, Redis • Hanami.rb • Trailblazer • Dependency Injection Container • Minitest + Capybara • Vue.js + ES6/WebPack • Docker
  9. Хіба в Rails є проблеми? • ActiveRecord та бизнес логика

    • Before action • HTML helpers • Constants autoloading • Конфігурація у 3-4 способи • ...
  10. Чи є альтернатива Rails? • Свій Rake застосунок • Мікрофреймворк:

    Sinatra, Roda, dry-web • Спеціалізоване рішення: Grape • Hanami.rb (колишній Lotus) Але фреймворк це лише частина вашого застосунку!
  11. Архітектура • MVC - ще не архітектура в шірокому сенсі

    • “Товста” модель, “худий” контролер - не має різниці • SOLID - не срібная пуля • Може TRUE ?
  12. Хто надихає мене в архітектурі веб застосунків? Sandi Metz Nick

    Sutterer
  13. Що ж таке “TRUE” від Sandi Metz З книги “Practical

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

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

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

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

  18. The Clean Architecture від Uncle Bob

  19. Як реалізувати це в 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)
  20. Trailblazer

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