Do things later with queue_classic.
IMPORTANT: this functionality is built in queue_classic starting with 3.1.
IMPORTANT: this branch is for QueueClassic 3. See the 0.3-stable branch for prior version support.
Add this line to your application's Gemfile:
And then execute:
Or install it yourself as:
$ gem install queue_classic-later
First, follow the queue_classic setup directions.
NOTE for Ruby 1.8.7: You'll also need to install the
json gem--but you really should upgrade to a newer version of ruby, it's no longer being maintained.
QC::Later has database setup to do, much like queue_classic itself. Use the same process suggested by the queue_classic
directions to run
QC::Later::Setup.create in a database migration or similar.
You'll need to periodically call
QC::Later.tick, such as via a
clock process. Calling it every 5-10
seconds is probably sufficient.
QC::Later adds two methods to
enqueue_in(seconds, method, *args): Like
enqueue, but wait
secondsbefore enqueueing the work
enqueue_at(time, method, *args): Like
enqueue_in, but wait until
timebefore enqueueing the work
Here's an example:
# Enqueue this in 30 seconds QC.enqueue_in(30, "Kernel.puts", "hello world") # Enqueue this at a specific time QC.enqueue_at(Time.new(2012, 10, 13, 12, 34, 56), "Kernel.puts", "hello world")
QC::Later.tick will enqueue these jobs to be worked by your worker(s) at the appropriate time.
Heavily inspired by resque-scheduler.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Add some feature')
- Push to the branch (
git push origin my-new-feature)
- Create new Pull Request