 
 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.
| Getting a Human-Readable Printout of Any Object | ||
|---|---|---|
| Code | Expected | Actual | 
| a = [1,2,3] puts a | 1 2 3 | 1 2 3 | 
| puts a.to_s | 123 | 123 | 
| puts a.inspect | [1, 2, 3] | [1, 2, 3] | 
| puts /foo/ | (?-mix:foo) | (?-mix:foo) | 
| puts /foo/.inspect | /foo/ | /foo/ | 
| f = File.open('foo', 'a')
puts f | #<File:0xb7c31c30> | #<File:0xb7c316b8> | 
| puts f.inspect | #<File:foo> | #<File:foo> | 
| periodic_table = [{ :symbol => "H", :name => "hydrogen", :weight => 1.007 },
                  { :symbol => "Rg", :name => "roentgenium", :weight => 272 }]
puts periodic_table.inspect | [{:symbol=>"H", :name=>"hydrogen", :weight=>1.007},
{:symbol=>"Rg", :name=>"roentgenium", :weight=>272}] | [{:symbol=>"H", :name=>"hydrogen", :weight=>1.007}, {:symbol=>"Rg", :name=>"roentgenium", :weight=>272}] | 
| eval(periodic_table.inspect)[0] | {:symbol=>"H", :name=>"hydrogen", :weight=>1.007} | {:symbol=>"H", :name=>"hydrogen", :weight=>1.007} | 
| class Dog
  def initialize(name, age)
    @name = name
    @age = age * 7 #Compensate for dog years
  end
end
spot = Dog.new("Spot", 2.1)
spot.inspect | "#<Dog:0xb7c16bec @name=\"Spot\", @age=14.7>" | "#<Dog:0xb7c16610 @name=\"Spot\", @age=14.7>" | 
| class Dog
  def inspect
    "<A Dog named #{@name} who's #{@age} in dog years.>"
  end
  def to_s
    inspect
  end
end
spot.inspect | "<A Dog named Spot who's 14.7 in dog years.>" | "<A Dog named Spot who's 14.7 in dog years.>" | 
| class Dog
  def inspect
    %{Dog.new("#{@name}", #{@age/7})}
  end
end
spot.inspect | "Dog.new(\"Spot\", 2.1)" | "Dog.new(\"Spot\", 2.1)" | 
| eval(spot.inspect).inspect | "Dog.new(\"Spot\", 2.1)" | "Dog.new(\"Spot\", 2.1)" | 
| strange_dog_name = %{Spot", 0); puts "Executing arbitrary Ruby..."; puts("}
spot = Dog.new(strange_dog_name, 0)
puts spot.inspect | Dog.new("Spot", 0); puts "Executing arbitrary Ruby..."; puts("", 0) | Dog.new("Spot", 0); puts "Executing arbitrary Ruby..."; puts("", 0) | 
| eval(spot.inspect) | Executing arbitrary Ruby... 0 | Executing arbitrary Ruby... 0 |