Respostas:
Como isso:
sleep(num_secs)
O num_secs
valor pode ser um número inteiro ou flutuante.
Além disso, se você estiver escrevendo isso em um aplicativo Rails ou tiver incluído a biblioteca ActiveSupport em seu projeto, poderá construir intervalos mais longos usando a seguinte sintaxe de conveniência:
sleep(4.minutes)
# or, even longer...
sleep(2.hours); sleep(3.days) # etc., etc.
# or shorter
sleep(0.5) # half a second
Use o sono da seguinte maneira:
sleep 2
Isso vai dormir por 2 segundos.
Tenha cuidado para argumentar. Se você apenas executar sleep
, o processo será suspenso para sempre. (Isso é útil quando você deseja que um thread durma até que seja despertado.)
Eu acho until
muito útil dormir. exemplo:
> time = Time.now
> sleep 2.seconds until Time.now > time + 10.seconds # breaks when true
sleep(10.seconds)
until
pode ser usado para dormir até que qualquer condição seja alcançada (também adoro a naturalidade da sintaxe)
sleep 6
dormirá por 6 segundos. Por um longo período, você também pode usar sleep(6.minutes)
ou sleep(6.hours)
.
minutes()
e hours()
os métodos numéricos adicionados pelo Ruby on Rails - portanto, não estão disponíveis no Ruby - na classe ActiveSupport :: Duration. Eles são bastante convenientes.
Implementação de segundos / minutos / horas, que são métodos rails. Observe que retornos implícitos não são necessários, mas eles parecem mais limpos, então eu os prefiro. Não tenho certeza se o Rails ainda tem dias. Ou se vai mais longe, mas esses são os que eu preciso.
class Integer
def seconds
return self
end
def minutes
return self * 60
end
def hours
return self * 3600
end
def days
return self * 86400
end
end
Depois disso, você pode fazer:
sleep 5.seconds
dormir por 5 segundos. Você pode fazer sleep 5.minutes
para dormir por 5 min. Você pode fazer sleep 5.hours
para dormir por 5 horas. E, finalmente, você pode sleep 5.days
dormir cinco dias ... Você pode adicionar qualquer método que retorne o valor de si * (quantidade de segundos nesse período de tempo). Como exercício, tente implementá-lo por meses!