Онлайн-воркшоп для Ruby-разработчиков, которые хотят освоить искусство метапрограммирования и понять, где, как и зачем его стоит применять Программа воркшопа День 1. Метапрограммирование в Ruby и не только Рассмотрим само понятие "метапрограммирование" в примерах на разных языках. Повторим наиболее распространенные техники и методы. Сравним метапрограммирование в разных языках Разберем базовые приемы метапрограммирования в Ruby: method declarations (define_method & def) code execution (eval & exec) variable access (instance_variable_get/set, const_get/set) class & module callbacks (included & extended) Обсудим принципы применения метапрограммирования Создадим небольшую библиотеку с DSL В результате вы сможете: Научиться использовать основной набор средств метапрограммирования в Ruby. Закрепить полученные сведения в небольшой библиотеке с самописным DSL в качестве домашнего задания. День 2. Динамический Ruby Рассмотрим вблизи динамическую природу Ruby и научимся создавать объекты с поведением, зависимым от окружения, будь то переменные из контекста выполнения или настройки запуска программы. Рассмотрим разницу ключевых слов и методов на примерах: def vs define_method class/module vs Class.new/Module.new Изучим способы создания "чистого" DSL Применим объект binding на практике Научимся создавать подклассы встроенных типов и разберем ситуации, когда это может быть полезно В результате вы сможете: Научиться динамически создавать расширения для классов и объектов из набора опций и параметров. Закрепить новые знания на практике путем улучшения API библиотеки из первой домашней работы. День 3. Метапрограммирование в реальных проектах Изучим код крупных проектов на ruby, использующих метапрограммирование. Сравним их слабые и сильные стороны с изученными на прошлых занятиях подходами. Рассмотрим внутренности Ruby on Rails, Dry.rb, Rspec Разберемся в нюансах вещей, оставшихся в стороне предыдущих тем: Использование method_missing method_added callback Связь методов initialize и new Подведем итоги по вопросам применения метапрограммирования В результате вы: Закроете оставшиеся пробелы по теме метапрограммирования в Ruby. Посмотрите на типичное применение метапрограммирования в известных проектах через призму полученного на занятиях опыта. За время воркшкопа вы: Научитесь правильно использовать основные средства метапрограммирования в Ruby Посмотрите на привычные ruby-разработчику идиомы новым взглядом Научитесь писать DSL и библиотеки с гибко настраивающимися функциями Разберетесь с применением метапрограммирования на примере Ruby on Rails, Rspec, Dry.rb Продажник: