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