Проблема в том, что вы получаете символ новой строки на вводе от пользователя.в то время как они вводят "y", вы фактически получаете "y \ n".Вам нужно скомпоновать символ новой строки, используя метод "chomp" для строки, чтобы он работал так, как вы хотите.что-то вроде:
speak_or_no = gets
speak_or_no.chomp!
while speak_or_no == "y"
#.....
end