Pierre-Louis is close:
require 'rufus-scheduler'
s = Rufus::Scheduler.new
p [ :scheduled_at, Time.now ]
s.every '5s', :first_in => 0.4 do
p [ :every, Time.now ]
end
s.join
Rufus-scheduler wakes up, by default, thrice per second so 0.4 is a good approximation.
This emits:
[:scheduled_at, Wed Jan 22 20:30:55 +0900 2014]
[:every, Wed Jan 22 20:30:56 +0900 2014]
[:every, Wed Jan 22 20:31:01 +0900 2014]
[:every, Wed Jan 22 20:31:06 +0900 2014]
[:every, Wed Jan 22 20:31:11 +0900 2014]
...