November 2012
Intermediate to advanced
888 pages
54h 46m
Polish
Chcemy periodycznie, w równych odstępach czasu, wykonywać pewien fragment kodu, na przykład wywołanie polecenia powłoki.
Należy stworzyć metodę powodującą uruchomienie bloku, a po jego zakończeniu zawieszenie wykonania na odpowiedni okres.
def every_n_seconds(n)
loop do
before = Time.now
yield
interval = n-(Time.now-before)
sleep(interval) if interval > 0
end
end
every_n_seconds(5) do
puts "Zegar wskazuje #{Time.now.strftime("%X")}... beep!"
end
# Zegar wskazuje 17:37:38... beep!
# Zegar wskazuje 17:37:43... beep!
# Zegar wskazuje 17:37:48... beep!
# Zegar wskazuje 17:37:53... beep!
# Zegar wskazuje 17:37:58... beep!
# Zegar wskazuje 17:38:03... beep!
# ...