2013-10-18 13 views
5

Wie könnte ich schreiben, dass mein Code nicht zum Beispiel 5 Sekunden schlafen, aber bis irgendwann auf der Maschine erreicht ist.Ruby Schlaf zu bestimmter Zeit

nicht so:

sleep(5) 

aber so etwas wie:

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

wie ist es richtig zu tun?

+1

Ich glaube, Sie möchten zu einer bestimmten Zeit eine Aufgabe erledigen? Was ist der Anwendungsfall? Warum nicht einen Cron-Job verwenden? – Lavixu

Antwort

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

Oder verwenden Sie die Rufus Scheduler

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

Vom OpenWFEru/ruote Projekt.

require 'rubygems' 
require 'rufus-scheduler' 

scheduler = Rufus::Scheduler.new 

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

Dies bietet eine echte passive warten, keine Last.

+0

ich versuche dies vorher, aber: http://stackoverflow.com/questions/19447467/rufus-scheduler-time-format – brabertaser19