Actually, I think attr_reader does create the instance variables:

class Song
    attr_reader :name, :artist, :duration
end

song = Song.new

puts song.name
puts song.artist
puts song.duration

puts song.fake

--output:---
nil
nil
nil
r1test.rb:18: undefined method `fake' for #<Song:0x253c8> 
(NoMethodError)
-- 
Posted via http://www.ruby-forum.com/.