23.4. Okresowe uruchamianie zadań bez używania mechanizmu cron lub at

Problem

Chcemy napisać samodzielny program w Ruby, który we wskazanym momencie uruchomi w tle zadanie lub będzie się uruchamiał okresowo w oznaczonych przedziałach.

Rozwiązanie

Należy utworzyć nowy proces, który będzie uśpiony do momentu, kiedy przyjdzie pora na uruchomienie kodu Ruby.

Oto program, który oczekuje w tle do pewnego momentu, a następnie wyświetla komunikat:

#!/usr/bin/ruby # lunchtime.rb def background_run_at(time) fork do sleep(1) until Time.now >= time yield end end today = Time.now noon = Time.local(today.year, today.month, today.day, 12, 0, 0) raise Exception, "Minął czas przerwy śniadaniowej!" if noon < Time.now background_run_at(noon) { puts "Przerwa ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.