 
 This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Extending Specific Objects with Modules (written by Phil Tomson) | ||
|---|---|---|
| Code | Expected | Actual | 
| class Person
  attr_reader :name, :age, :occupation
  def initialize(name, age, occupation)
    @name, @age, @occupation = name, age, occupation
  end    
  def mild_mannered?
    true
  end
end
jimmy = Person.new('Jimmy Olsen', 21, 'cub reporter')
clark = Person.new('Clark Kent', 35, 'reporter')
jimmy.mild_mannered? | true | true | 
| clark.mild_mannered? | true | true | 
| module SuperPowers
  def fly
    'Flying!'
  end
  def leap(what)    
    "Leaping #{what} in a single bound!"
  end
  def mild_mannered?
    false
  end
  def superhero_name
    'Superman'
  end
end
clark.extend(SuperPowers)
clark.superhero_name | "Superman" | "Superman" | 
| clark.fly | "Flying!" | "Flying!" | 
| clark.mild_mannered? | false | false | 
| jimmy.mild_mannered? | true | true | 
| class Person extend SuperPowers end #which is equivalent to: Person.extend(SuperPowers) Person.superhero_name | "Superman" | "Superman" | 
| Person.fly | "Flying!" | "Flying!" |