Keep classes anonymous in TicTacToe program
def setup_board
  @gameboard = []
  9.times { @gameboard &lt;&lt; " " }
end


Can just be:

@gameboard = Array.new(9){ " " }




It is idiomatic in Ruby to omit parentheses when not needed, e.g. display_board instead of display_board().



def winner?(player_score)
  WINNING_SCORES.each do |score|
    return true if player_score &amp; score == score
  end
  false
end


Instead:

def winner?(player_score)
  WINNING_SCORES.any?{ |score| player_score &amp; score == score }
end


(I'm trusting that the bitwise AND logic you have there is correct.)