Sha256: 8222795ac3061da86692b69f22ae1e6c35746b30df20d098280d265abf9e2f11

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

require 'logger'
require 'afterparty/queue_helpers'
require 'afterparty/redis_queue'
require 'redis'
Dir[File.expand_path('../afterparty/*', __FILE__)].each { |f| require f }


module Afterparty
  @@redis = Redis.new

  def self.redis
    @@redis
  end
  def self.redis=(redis)
    @@redis = redis
  end

  def self.clear namespace=:default
    redis_call namespace, :del
  end

  def self.redis_call namespace, command, *args
    @@redis.send(command, redis_queue_name(namespace), *args)
  end

  def self.redis_queue_name namespace=:default
    "afterparty_#{namespace}_queue"
  end

  def self.queues
    @@redis.smembers "afterparty_queues"
  end

  def self.add_queue name
    @@redis.sadd "afterparty_queues", name
  end

  def self.next_job_id namespace=:default
    @@redis.incr "afterparty_#{namespace.to_s}_job_id"
  end

  def self.load(raw)
    begin
      begin
        job = Marshal.load(raw)
        job = Marshal.load(job) if String === job
        return job
      rescue NameError => e
        # lots of marshal load errors are because something that hasn't been
        # required. recursively require on these errors
        name = e.message.gsub("uninitialized constant ","").downcase
        begin
          require "#{name}"
          return load(raw)
        rescue LoadError
        end
      end
    rescue
      return nil
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
afterparty-0.0.4 lib/afterparty.rb
afterparty-0.0.3 lib/afterparty.rb