I really appreciate that this example shows a useful testing strategy and handles the big scheduling gotcha (rescheduling jobs.) Neither are hard solutions once the answer is known, but having them spelled out will save someone a lot of time.
I disagree. Cron is meant to run at specific intervals, not at specific, arbitrary times.
In apps where we're using this technique, we may have hundreds or thousands of jobs scheduled at various times in the future (appointment reminders are a great example). Cron would have to check every minute or two, whereas we have Delayed Job already running a queue. They just get pulled in when their time is right.
I doubt your jobs get pulled into the queue. You probably enqueue them and just inform your workers to execute them when the worker's Time.now > the job's run_at. This mean's you may have thousands of jobs in your queue at any moment. An advantage of using cron to schedule is that you won't have as many jobs in your queue at arbitrary times.