Если ничего не отправлено в STDOUT за последние x минут, как вызвать ошибку - PullRequest
0 голосов
/ 22 марта 2012

Интересно, возможно ли это, потому что, если это так, это помогло бы мне реализовать то, что мне нужно для программы, которую я делаю:

Есть ли способ присоединить какой-либо слушатель к STDOUT из программы на Ruby, чтобы, если в течение определенного промежутка времени в STDOUT ничего не было записано (с помощью put), возникла ошибка?

В противном случае запись в STDOUT должна работать как положено.

1 Ответ

1 голос
/ 22 марта 2012

Возможно что-то вроде этого:

 def new_puts(what)
  @time_th.kill if(@time_th)

  puts what
  @time_th = Thread.new() {
    sleep(2)
    raise "here"
  }
  @time_th.abort_on_exception = true
end

new_puts("test")
new_puts("test2")
sleep(10)

new_puts("test3") #too late

или с методами обратного вызова:

def callback
  puts "Timeout!"
end

def new_puts(what)
  @time_th.kill if(@time_th)

  puts what
  @time_th = Thread.new() {
    sleep(2)
    self.method(:callback).call
  }
end

new_puts("test")
new_puts("test2")
sleep(10)
new_puts("test3") #too late
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...