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:
gem "queue_classic-later"
And then execute:
$ bundle
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 QC::Queue
:
enqueue_in(seconds, method, *args)
: Likeenqueue
, but waitseconds
before enqueueing the workenqueue_at(time, method, *args)
: Likeenqueue_in
, but wait untiltime
before 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