class MultiWorker::Adapters::Que

Attributes

worker_klass[R]

Public Class Methods

configure(base, opts={}) click to toggle source
# File lib/multi_worker/adapters/que.rb, line 4
def self.configure(base, opts={})
  base.class_eval do
    @queue = opts[:queue]

    def self.perform(*args)
      self.new.perform(*args)
    end

    def self.perform_async(*args)
      @job_klass.queue(*args)
    end

    def perform_async(*args)
      self.class.perform_async(*args)
    end

    worker_klass = self

    @job_klass = Class.new(::Que::Job)
    @job_klass.class_eval do
      @worker_klass = worker_klass

      class << self
        attr_reader :worker_klass
      end

      def run(*args)
        self.class.worker_klass.new.perform(*args)
      end
    end

    const_set :Job, @job_klass
  end
end
perform(*args) click to toggle source
# File lib/multi_worker/adapters/que.rb, line 8
def self.perform(*args)
  self.new.perform(*args)
end
perform_async(*args) click to toggle source
# File lib/multi_worker/adapters/que.rb, line 12
def self.perform_async(*args)
  @job_klass.queue(*args)
end
rake_task() click to toggle source
# File lib/multi_worker/adapters/que.rb, line 39
def self.rake_task
  require 'rake'
  require 'que/rake_tasks'

  ::Rake::Task['que:work']
end

Public Instance Methods

perform_async(*args) click to toggle source
# File lib/multi_worker/adapters/que.rb, line 16
def perform_async(*args)
  self.class.perform_async(*args)
end
run(*args) click to toggle source
# File lib/multi_worker/adapters/que.rb, line 30
def run(*args)
  self.class.worker_klass.new.perform(*args)
end