Repository is archived
No commit activity in last 3 years
No release in over 3 years
Do things later with queue_classic
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

QC::Later

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.

Installation

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

Setup

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.

Usage

QC::Later adds two methods to QC::Queue:

  • enqueue_in(seconds, method, *args): Like enqueue, but wait seconds before enqueueing the work
  • enqueue_at(time, method, *args): Like enqueue_in, but wait until time 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.

Credit

Heavily inspired by resque-scheduler.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request