Ruby Technique: Meta Programming
Meta Programming is code that writes code. See the code sample below.
I have made a screencast of this process. View it here
#!/usr/bin/env ruby class Product def initialize(items) items.each {|item| Product.product(item) } end def self.product(item) code = %Q{ def add_#{item}(item) @#{item} = [] unless @#{item} @#{item} << item end def display_#{item}s @#{item}.each {|item| puts item } end } class_eval(code) end end class Item < Product def initialize(*items) super(items) end end cart = Item.new(:book, :computer, :music) cart.add_book(:Ruby) # => Add a book to our cart items cart.display_books # => We want to display All books we have added puts "\n" cart.add_computer(:Apple) cart.add_computer(:Dell) cart.add_computer(:Sony) cart.display_computers # => Display All Computers puts "\n" cart.add_music(’Modest Mouse‘) cart.add_music(’Northstar‘) cart.display_musics # => Display All Music Items