Паттерны на ruby: Цепочка обязанностей
Описание: Данный паттерн представляет собой реализацию последовательной цепочки обработчиков для какого либо события/сообщения. Каждый обработчиков решает одну задачу: обработать запрос самостоятельно или передать его дальше по цепочке.
Пример задачи: У нас есть веб-приложение. На каждый ответ от сервера должен генерироваться небольшой лог в виде json и создаваться запись в лог-файле. Есть определенная корпоративная политика по обработке таких логов:
Логи c 2xx статусами храняться в файла production.log;
Логи c 2xx статусами содержащую информацию об оплате храняться в production_payments.log;
Логи с 4хх статусами храняться в файле production4xx.log и падают в канал в telegram;
Логи с 5хх статусами храняться в файле production5xx.log и падают в канал в slack;
Реализация: Основная логика объекта, для цепочки, будет описана в абстрактном классе <LogHandler>. От него будем наследовать классы-обработчики для каждого условия хранения логов. Далее, созданные классы необходимо объединить в цепочку. Цепочку будем формировать от частного к общему.