Вы должны использовать темы для этого:
Thread.new do
while line = STDIN.gets
break if line.chomp == 'x'
end
exit
end
# whatever you want to do in the background
# (or rather in the foreground, actually)
loop do
puts "foo"
sleep 1
end
Проблема в том, что STDIN.gets
блокирует, поэтому вы не можете сделать что-то еще одновременно, не распараллеливая программу, используя фоновый поток, который проверяет только ввод.