Meta Programming

A metaprogram is a program that manipulates other programs (or itself) as its data. Metaprogramming is the act of writing metaprograms.

Ruby Metaprogramming

Metaprogramming in Ruby is writing code that manipulates language constructs (like classes, modules, and instance variables) at runtime. It is even possible to enter new Ruby code at runtime and execute the new code without restarting the program.