Metaprogramming คือการเขียนโค้ดที่ เขียนหรือแก้ไขโค้ดในขณะรันไทม์ — นิยามเมธอดแบบไดนามิก, ตอบสนองต่อเมธอดที่ไม่ได้นิยามไว้ และตรวจสอบ/เปลี่ยนแปลงคลาสได้ในทันที ธรรมชาติแบบไดนามิกของ Ruby (ทุกอย่างเป็นอ็อบเจกต์ รวมถึงคลาส) ทำให้มันยอดเยี่ยมเป็นพิเศษในเรื่อง metaprogramming ซึ่งขับเคลื่อน "เวทมนตร์" ของ Rails เป็นส่วนใหญ่
การนิยามเมธอดแบบไดนามิก
[, , ].each ||
(attribute)
instance_variable_get()
() ||
instance_variable_set(, value)
