I have considered writing a cron-like system in pure Ruby, as it would
allow the type of scheduling you are talking about on all platforms in
a consistent manner. At the moment we have cron on Unix systems,
Scheduled Tasks on Windows, etc., all of which operate differently.
I haven’t yet created this system, but I have played with some of the
ideas. The way I was going was to have a server process with a thread
that wakes up every 10 seconds or so, checks the date and time against
tasks that need to be run, and any tasks that have “expired” times
would be run in their own threads. It is pretty simple, and a basic
version would be easy to code. The complexity comes when you try to
provide complex scheduling rules (i.e. “run this task M-F at 2AM from
May to September.”) But if you just have simple date and time based
scheduling rules, this will be easy.