SlideShare a Scribd company logo
Rails Concerns
или “забота” о коде
Владимир Дементьев, 04.2015
План
— ActiveSupport::Concern
— Models
— Controllers
— Routes
2
Concern = Module + …
3
Concern = Module + SoC*
* Separation of Concerns – разделение ответственности
4
Module != Concern
5
Module == Concern
6
ActiveSupport::Concern
7
ActiveSupport::Concern
8
ActiveSupport::Concern
— синтаксический сахар
— менеджер зависимостей
9
AS::Concern – менеджер зависимостей
10
Консерны моделей
— разделение кода между моделями
— извлечение несущественного кода
из модели
11
https://signalvnoise.com/posts/3372-put-chubby-models-on-a-diet-with-concerns
“Put chubby models on a diet with concerns”*
DHH, Dec, 2012
* Посади свои пухлые модели на диету с консернами
12
Консерны моделей: разделение кода
13
Консерны моделей: извлечение кода
14
Консерны моделей: полиморфизм
15
Консерны контроллеров
— соответствуют консернам моделей
— вспомогательный функционал
(рендеринг, авторизация)
16
17
18
Консерны контроллеров
19
Консерны контроллеров
20
Консерны контроллеров
21
Консерны: роутинг
22
Консерны: Commentable
23
Консерны: тесты
RSpec Shared Examples
https://www.relishapp.com/rspec/rspec-core/docs/example-groups/shared-examples
24
Shared Examples: Модели
25
SE: Контроллеры
26
Консерны моделей: тесты
with_model gem
https://github.com/Casecommons/with_model
27
Консерны моделей: тесты
28
Анонимный контроллер
29
Naming convention*: Example
30
* соглашение об именовании
Типичная ошибка:
Naming convention: Example
31
Тип Правило Пример
Модель Ability (-able) Archivable
Контроллер Present Perfect (-ed) Archived
Роуты Model/Controller archivable
Namespaces: Example
32
Naming convention: Example
33
Тип Правило Пример
Модель Ability (-able) Archivable
Контроллер Present Perfect (-ed) Archived
Роуты Model/Controller archivable
Декораторы Has- HasArchive
Сериалайзеры With- WithArchive
with_model With + Model WithArchivable
Вопросы

More Related Content

PDF
RSpec. Part 3
PPT
Александр Тищенко - "Антикризисная презентация"
PDF
RSpec. Part 2
ODP
Ruby on Rails for noobs
PDF
Когда технологий много - iForum 2013
ODP
I18n ruby-приложений
PDF
Debbug Rails Application For Dummies
PDF
Assets Pipeline
RSpec. Part 3
Александр Тищенко - "Антикризисная презентация"
RSpec. Part 2
Ruby on Rails for noobs
Когда технологий много - iForum 2013
I18n ruby-приложений
Debbug Rails Application For Dummies
Assets Pipeline

Viewers also liked (20)

PDF
10 reasons I love RubyOnRails
PDF
Фронтенд для рубиста
PDF
RSpec. Part 1
PDF
PDF
Deploy.rb, Ilya Zykin, Rails club2016
PPTX
развертывание среды Rails (антон веснин, Locum Ru)
PPTX
Призма24 - Маркетплейсы.
PDF
Как сделать контрибут в Ruby on Rails
ODP
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
PDF
Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...
PPTX
Why does code style matter?
PDF
Секретный доклад о React Router - OdessaJS 2014
PPT
Refactorings with RubyMine
PDF
Immutable servers with Packer/Chef/AWS
ODP
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
PPT
Errbit - агрегатор сбоев в продакшене
PPTX
Rails for dummies
PDF
Корпоративное приложение на Rails
PDF
Отладка и эксплуатация Rails-приложений
PPTX
Разрушаем негативные мифы Ruby, Rails.
10 reasons I love RubyOnRails
Фронтенд для рубиста
RSpec. Part 1
Deploy.rb, Ilya Zykin, Rails club2016
развертывание среды Rails (антон веснин, Locum Ru)
Призма24 - Маркетплейсы.
Как сделать контрибут в Ruby on Rails
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...
Why does code style matter?
Секретный доклад о React Router - OdessaJS 2014
Refactorings with RubyMine
Immutable servers with Packer/Chef/AWS
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
Errbit - агрегатор сбоев в продакшене
Rails for dummies
Корпоративное приложение на Rails
Отладка и эксплуатация Rails-приложений
Разрушаем негативные мифы Ruby, Rails.
Ad

Rails Concerns