Metaprogramowanie to pisanie kodu, który pisze lub modyfikuje kod w czasie wykonywania — dynamiczne definiowanie metod, reagowanie na niezdefiniowane metody oraz inspektowanie/zmiana klas w locie. Dynamiczna natura Ruby'ego (wszystko jest obiektem, w tym klasy) czyni go wyjątkowo dobrym do metaprogramowania, które zasilą wiele "magii" w Rails.
Dynamiczne definiowanie metod
[, , ].each ||
(attribute)
instance_variable_get()
() ||
instance_variable_set(, value)
