Руби тайм-аут в течение - PullRequest
       1

Руби тайм-аут в течение

0 голосов
/ 17 декабря 2018

Я пытаюсь напечатать "Please input a value" и поднять Timeout::Error, если ввод не получен в течение 2 секунд.

Я думал, что смогу сделать:

puts "Please input a value"
Timeout.timeout(2) do
  ans = gets
end
raise "aborted" unless ans == 'y'

Когда я бегусценарий, он печатает сообщение, а затем просто сидит.Если я введу значение через 10 секунд (например), то оно истечет.Время ожидания не истечет, пока я не введу значение.

1 Ответ

0 голосов
/ 17 декабря 2018

Как я понимаю, вам нужен только y ответ, и вы хотите дать 2 секунды для ответа.

Вы можете использовать begin..rescue..end конструкция и цикл until для y ответа

require 'timeout'

puts 'Input something'

begin
  status = Timeout::timeout(2) { answer = gets.chomp.downcase until answer == 'y' }
rescue Timeout::Error
  puts 'Time is out'
end

Но в Windows лучше использовать STDIN.gets.Вы можете прочитать об этом здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...