Metaprogramming is writing code that writes or modifies code at runtime — defining methods dynamically, responding to undefined methods, and inspecting/altering classes on the fly. Ruby's dynamic nature (everything is an object, including classes) makes it exceptionally good at metaprogramming, which powers much of Rails' "magic."
Defining methods dynamically
[, , ].each ||
(attribute)
instance_variable_get()
() ||
instance_variable_set(, value)
