Онлайн-воркшоп для Ruby-розробників, які хочуть освоїти мистецтво метапрограмування і зрозуміти, де, як і навіщо його варто застосовувати
програма воркшопу
День 1. метапрограмування в Ruby і не тільки
Розглянемо саме поняття "метапрограмування" в прикладах на різних мовах. Повторимо найбільш поширені техніки і методи.
Навчитися використовувати основний набір засобів метапрограмування в Ruby. Закріпити отримані відомості в невеликій бібліотеці з самописним DSL в якості домашнього завдання.
День 2. динамічний Ruby
Розглянемо поблизу динамічну природу Ruby і навчимося створювати об'єкти з поведінкою, залежним від оточення, будь то змінні з контексту виконання або настройки запуску програми.
Навчитися динамічно створювати розширення для класів і об'єктів з набору опцій і параметрів. Закріпити нові знання на практиці шляхом поліпшення API бібліотеки з першої домашньої роботи.
День 3. метапрограмування в реальних проектах
Вивчимо код великих проектів на ruby, що використовують метапрограмування. Порівняємо їх слабкі і сильні сторони з вивченими на минулих заняттях підходами.
Закрийте решту пробілів на тему метапрограмування в 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
https://privatelink.de/?https://thinknetica.com/pro/workshop_metaprogramming_ruby