module Rabbithole

Constants

VERSION
VERSION_MAJOR
VERSION_MINOR
VERSION_RELEASE

Public Class Methods

enqueue(klass, *args) click to toggle source
# File lib/rabbithole.rb, line 15
def self.enqueue(klass, *args)
  if klass.is_a?(Class)
    if klass.respond_to?(:perform)
      payload = {
        :klass => klass.to_s,
        :args  => args
      }.to_msgpack

      queue = klass.instance_variable_defined?(:@queue) ? klass.instance_variable_get(:@queue) : Connection::DEFAULT_QUEUE
      Connection.publish(queue, payload)
    else
      raise InvalidJobError.new("The class #{klass} does not define the method perform. I don't know how to execute it...")
    end
  else
    raise UnknownJobError.new("The class #{klass} is not known to Rabbithole. Is it a class?")
  end
end