
Метапрограмування в Ruby
define_method, method_missing, class_eval, instance_eval, hooks, DSLs
1Що таке метапрограмування в Ruby?
Що таке метапрограмування в Ruby?
Відповідь
Метапрограмування — це здатність програми писати або змінювати код під час виконання. У Ruby це дозволяє динамічно визначати методи, класи та модулі, роблячи код гнучкішим і лаконічнішим. Ця техніка широко використовується у фреймворках на кшталт Rails для створення елегантних DSL та зменшення дублювання коду.
2Яке призначення методу define_method у Ruby?
Яке призначення методу define_method у Ruby?
Відповідь
define_method дозволяє створювати методи динамічно під час виконання. Він приймає ім'я методу (символ або рядок) і блок, що визначає тіло методу. На відміну від def, define_method захоплює локальні змінні з охоплюючої області видимості через closure, що корисно для генерування методів із параметризованою поведінкою.
3Коли метод method_missing викликається Ruby?
Коли метод method_missing викликається Ruby?
Відповідь
method_missing викликається автоматично, коли об'єкт отримує виклик методу, який не існує в його ланцюжку успадкування. Він отримує ім'я викликаного методу та його аргументи, що дозволяє динамічно обробляти ці виклики. Це основа багатьох патернів метапрограмування, як-от ghost methods, що використовуються в ActiveRecord.
Яка основна різниця між class_eval та instance_eval?
Який hook викликається, коли module включається до класу?
+17 питань зі співбесід
Інші теми співбесід Ruby on Rails
Основи Ruby
Об'єктно-орієнтоване програмування в Ruby
Основи Rails
Routing & Controllers
Основи ActiveRecord
Views та шаблони ERB
Асоціації ActiveRecord
Розширені запити ActiveRecord
Форми Rails
Автентифікація та авторизація
Сучасний Asset Pipeline та frontend
Режим API Rails
Тестування з RSpec
ActiveJob & Background Jobs
ActionCable & WebSockets
ActionMailer
ActiveStorage
Стратегії кешування
Розширені міграції
Rails Engines та модульні застосунки
Оптимізація продуктивності
Патерни проєктування Rails
Безпека Rails
GraphQL із Rails
Розгортання та Продакшн
Monitoring & Logging
Стратегії оновлення Rails
Опануй Ruby on Rails для наступної співбесіди
Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.
Почни безкоштовно