Class: Resque::Failure::MultipleFailure

Inherits:
Base
  • Object
show all
Defined in:
lib/resque/failure/multiple_failure.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.all(queue, start = 0, count = 1) ⇒ Object



39
40
41
42
# File 'lib/resque/failure/multiple_failure.rb', line 39

def self.all(queue, start = 0, count = 1)
  queue = queue =~ /^failed_/ ? queue : "failed_#{queue}"
  Resque.list_range(queue.to_sym, start, count)
end

.clear(queue = nil) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/resque/failure/multiple_failure.rb', line 44

def self.clear(queue=nil)
  if queue
    queue = queue =~ /^failed_/ ? queue : "failed_#{queue}"
    Resque.redis.del(queue.to_sym)
  else
    Resque.queues.each {|queue| Resque.redis.del("failed_#{queue}") }
  end
end

.count(queue = nil) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/resque/failure/multiple_failure.rb', line 22

def self.count(queue=nil)
  if queue
    queue = queue =~ /^failed_/ ? queue : "failed_#{queue}"
    Resque.redis.llen(queue.to_sym).to_i
  else
    count = 0
    Resque.queues.each do |queue|
      count += Resque.redis.llen("failed_#{queue}".to_sym).to_i
    end
    count
  end
end

.queuesObject



18
19
20
# File 'lib/resque/failure/multiple_failure.rb', line 18

def self.queues
  Resque.queues.map {|queue| "failed_#{queue}"}
end

.requeue(queue, index) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/resque/failure/multiple_failure.rb', line 53

def self.requeue(queue, index)
  queue = queue =~ /^failed_/ ? queue : "failed_#{queue}"
  item = all(queue, index)
  item['retried_at'] = Time.now.strftime("%Y/%m/%d %H:%M:%S")
  Resque.redis.lset(queue.to_sym, index, Resque.encode(item))
  Job.create(item['queue'], item['payload']['class'], *item['payload']['args'])
end

.urlObject



35
36
37
# File 'lib/resque/failure/multiple_failure.rb', line 35

def self.url
  "/failed/list"
end

Instance Method Details

#saveObject



4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/resque/failure/multiple_failure.rb', line 4

def save
  data = {
    :failed_at => Time.now.strftime("%Y/%m/%d %H:%M:%S"),
    :payload   => payload,
    :exception => exception.class.to_s,
    :error     => exception.to_s,
    :backtrace => Array(exception.backtrace),
    :worker    => worker.to_s,
    :queue     => queue
  }
  data = Resque.encode(data)
  Resque.redis.rpush("failed_#{queue}".to_sym, data)
end