7 ms·
Tweet later with Delayed Job
- pavel_lishin 16y ago> What if you wanted to have a message scheduled to be tweeted 10 minutes before a blog was published? Why?
- zmoazeni 16y agoThat example may be contrived, but I've had a few projects in the past where I had to schedule tweets and this strategy is pretty slick and testable.
- tedjdziuba 16y agoSeems like a lot of effort to avoid using cron.
- danielmorrison 16y agoI 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.
- pavel_lishin 16y agoHow does delayed_job work? Does it just run as a daemon in the background?
- ryandotsmith 16y agoIt calls rake jobs:work.
- bryckbost 16y agoYep, it runs in the background. `script/delayed_job` can be used to manage the process or `rake jobs:work`. Either will start working off jobs.
- ryandotsmith 16y agoI 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.
- sgndave 16y agoWell, atd would be better, but sure. Edit: Rubyists! Solving the problems of 30 years ago... today!
- kalak451 16y agoI 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.