Рассмотрим вблизи динамическую природу Ruby и научимся создавать объекты с поведением, зависимым от окружения, будь то переменные из контекста выполнения или настройки запуска программы. Подробно рассмотрим использование proc и lambda, при создании DSL и отдельно, в отрыве от какого либо контекста.
- Рассмотрим разницу ключевых слов и методов на примерах:
- def vs define_method
- class/module vs Class.new/Module.new
- Изучим способы создания "чистого" DSL
- Применим объект binding на практике
- Научимся создавать подклассы встроенных типов и разберем ситуации, когда это может быть полезно
В результате вы сможете: Научиться динамически создавать расширения для классов и объектов из набора опций и параметров. Закрепить новые знания на практике путем улучшения API библиотеки из первой домашней работы.