title: Why isn't the puts method calling my .to_s method?
body: <p>I thought that defining a <code>to_s</code> method for a custom class meant that calling the <code>puts</code> method on that class would return an output as specified by <code>to_s</code>. In this program, however, I only get the result I crave if I write <code>puts bingo_board.to_s</code>. What is going on?</p>
  
  <pre><code>class BingoBoard &lt; Array
    @@letters = %w[B I N G O]
  
    def initialize
      # populates an 5x5 array with numbers 1-100
      # to make this accessible across your methods within this class, I made
      # this an instance variable. @ = instance variable
      @bingo_board = Array.new(5) {Array.new(5)}
      @bingo_board.each_with_index do |column, i|
        rangemin = 15 * i + 1
        @bingo_board[i] = (rangemin..(rangemin+14)).to_a.sample(5)
      end
      @bingo_board[2][2] = "X" # the 'free space' in the middle
      @game_over = false
    end
  
    def game_over?
      @game_over
    end
  
    def generate_call
      ....
    end
  
    def compare_call(call)
      @bingo_board[@@letters.index(call[0])].include? call[1]
    end
  
    def react_to_call(call)
      ...
    end
  
    def check_board
      ...
    end
  
    def show_column(num)
      ...
    end
  
    def to_s
      result = ""
      0.upto(4) do |val|
        result += " " + @@letters[val] + " "
      end
      result += "\n\n"
      0.upto(4) do |row|
        0.upto(4) do |col|
          val = @bingo_board[col][row]
          result += " " if val.to_i &lt; 10
          result += val.to_s + " "
        end
        result += "\n"
      end
      result
    end
  end
  
  my_board = BingoBoard.new
  counter = 0
  until my_board.game_over?
    puts my_board.to_s # renders the board in accordance with my to_s method
    call = my_board.generate_call
    counter += 1
    puts "\nThe call \# #{counter} is #{call[0]} #{call[1]}"
    my_board.react_to_call(call)
    gets.chomp
  end
  puts my_board  # renders bubkes (i.e., nothing)
  puts "\n\n"
  puts "Game over"
  </code></pre>