Metaprogramování je psaní kódu, který píše nebo upravuje kód za běhu — dynamické definování metod, reagování na nedefinované metody a zkoumání/úprava tříd za chodu. Dynamická povaha Ruby (vše je objekt, včetně tříd) jej činí mimořádně dobrým v metaprogramování, které pohání velkou část „magie“ Railsu.
Dynamické definování metod
[, , ].each ||
(attribute)
instance_variable_get()
() ||
instance_variable_set(, value)
