Usage
resque-web QUEUE='*' COUNT=3 rake resque:workers & GenericJob.publish(Product, :reindex_all, :args=> [{:limit=>1000}]
Setup
#append to Rakefile require 'resque/tasks' namespace :resque do task :setup => :environment end
class GenericJob @queue = :generic def self.perform(klass, method, options={}) options = options.with_indifferent_access if options.has_key?(:args) klass.constantize.send(method, *options[:args]) else klass.constantize.send(method) end end def self.publish(klass, method, options={}) Resque.enqueue(self, klass.to_s, method.to_s, options) end end
If you plan to process instances of AR with this setup, be sure to add serialize_ar / deserialize_ar from solving background processing with a single generic background-job