What Is Metaprogramming?Don’t Repeat YourselfCaveatsBottom-Up ProgrammingRuby FoundationsClasses and ModulesMethod LookupThe rulesClass inheritanceClass instantiationIncluding modulesThe singleton classSingleton classes of class objectsMethod missingMetaidVariable LookupBlocks, Methods, and ProcsBlocks to Procs and Procs to blocksClosuresMetaprogramming TechniquesDelaying Method Lookup Until RuntimeGenerative Programming: Writing Code On-the-FlyContinuationsBindingsIntrospection and ObjectSpace: Examining Data and Methods at
RuntimeObjectSpaceDelegation with Proxy ClassesDelegateClass and ForwardableMonkeypatchingDisadvantages of monkeypatchingAdding Functionality to Existing MethodsSubclassingAspect-oriented programmingMethod chainingModulizationFunctional ProgrammingHigher-Order FunctionsEnumerablePredicatesFiltersTransformersAggregatorsOtherEnumeratorExamplesRuntime Feature ChangesRails Routing CodeFurther Reading