2013-10-18 54 views
5

我怎么能写,我的代码睡眠不是例如5秒,但直到在机器上的某个时间到达。红宝石睡眠到特定时间

并非如此:

sleep(5) 

但类似:

now = DateTime.Now 
while now != "14:40:03" 
    sleep(0.5) 
end 

它是如何正确的呢?

+1

我相信你想在特定的时间做一些任务吗?什么是用例?为什么不使用cron作业? – Lavixu

回答

16
require "time" 
sleep(Time.parse("14:40:03") - Time.now) 
1

或者使用鲁弗斯调度

https://github.com/jmettraux/rufus-scheduler

从OpenWFEru/RUOTE项目。

require 'rubygems' 
require 'rufus-scheduler' 

scheduler = Rufus::Scheduler.new 

scheduler.in '20m' do 
    #do something 
end 

这提供了一个真正的被动等待,空载。

+0

我之前尝试过,但:http://stackoverflow.com/questions/19447467/rufus-scheduler-time-format – brabertaser19