Crafting elegant code with Ruby DSLs

Meta-programming