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
CodeExpectedActual
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