Module: Afterparty

Defined in:
lib/afterparty.rb,
lib/afterparty/jobs.rb,
lib/afterparty/queue.rb,
lib/afterparty/engine.rb,
lib/afterparty/worker.rb,
lib/afterparty/version.rb,
lib/afterparty/job_container.rb,
lib/afterparty/queue_helpers.rb,
lib/afterparty/threaded_queue_consumer.rb,
app/controllers/afterparty/dashboard_controller.rb

Defined Under Namespace

Modules: QueueHelpers Classes: BasicJob, DashboardController, Engine, JobContainer, MailerJob, Queue, TestQueue, ThreadedQueueConsumer, Worker

Constant Summary collapse

VERSION =
"0.1.1"

Class Method Summary collapse

Class Method Details

.clear(namespace = :default) ⇒ Object



8
9
10
# File 'lib/afterparty.rb', line 8

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

.job_valid?(job) ⇒ Boolean

returns true if job has an :execute_at value

Returns:

  • (Boolean)


30
31
32
# File 'lib/afterparty.rb', line 30

def self.job_valid? job
  job.respond_to?(:execute_at) && !job.execute_at.nil?
end

.load(raw) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/afterparty.rb', line 34

def self.load(raw)
  begin
    # postgres converts it to utf-8
    # raw.encode!("ascii")
    begin
      # job = Marshal.load(raw)
      # job = Marshal.load(job) if String === job
      return YAML.load(raw)
    rescue ArgumentError => e
      # lots of yaml load errors are because something that hasn't been
      # required. recursively require on these errors
      # Invoke the autoloader and try again if object's class is undefined
      if e.message =~ /undefined class\/module (.*)$/
        # puts "autoloading #{$1}"
        $1.constantize rescue return nil
      end
      return load(raw)
    end
  rescue Exception => e
    puts e
    puts "Exception while unmarshaling a job:"
    puts e.message
    puts e.backtrace
    return nil
  end
end

.queue_time(job) ⇒ Object

return timestamp of :execute_at or current time



25
26
27
# File 'lib/afterparty.rb', line 25

def self.queue_time job
  time = job_valid?(job) ? job.execute_at : DateTime.now
end

.queuesObject



20
21
22
# File 'lib/afterparty.rb', line 20

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

.redis_call(namespace, command, *args) ⇒ Object



12
13
14
# File 'lib/afterparty.rb', line 12

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

.redis_queue_name(namespace = :default) ⇒ Object



16
17
18
# File 'lib/afterparty.rb', line 16

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