Метапрограммирование — один из способов создавать программы, которые создают другие программы. В отличие от кодогенерации, метапрограммирование “пишет” код прямо в рантайме, и в Ruby используется именно такой подход. Первым делом мы разберемся с тем, как виртуальная машина Ruby представляет наши классы и объекты, а затем — как работает наследование и модули. После этого — перейдем к способам динамического объявления методов, реализации замыканий и биндингов (биндинг — это как замыкание, но без функции). Наконец, мы применим полученные знания для создание своих собственных DSL (domain specific language): напишем свой собственный геттер, генератор модулей, и, наконец, роутер и базовую реализацию паттерна ActiveRecord. Доклад будет интересен как практикующим Ruby–программистам (нас мало, я знаю!), так и всем остальным — возможно после доклада у них тоже возникнет желание разобраться с тем, как работает их любимый язык. Для того, чтобы понять эту тему не потребуется знание синтаксиса Ruby — всё что нужно мы узнаем прямо в процессе доклада.