Metaprogramação é escrever código que escreve ou modifica código em tempo de execução — definindo métodos dinamicamente, respondendo a métodos indefinidos e inspecionando/alterando classes instantaneamente. A natureza dinâmica do Ruby (tudo é um objeto, incluindo classes) torna-o excepcionalmente bom em metaprogramação, o que potencia muito da "mágica" do Rails.
Definindo métodos dinamicamente
[, , ].each ||
(attribute)
instance_variable_get()
() ||
instance_variable_set(, value)
