Copie o snippet abaixo e cole-o em um console do Rails
def retry_if(&should_retry)
redis = Resque.redis
(0...Resque::Failure.count).each do |i|
serialized_job = redis.lindex(:failed, i)
job = Resque.decode(serialized_job)
next unless should_retry.(job)
Resque::Failure.requeue(i)
end
end
Para tentar novamente um subconjunto de tarefas com falha, digamos notificações por e-mail que falharam devido a erros smtp
retry_if do |job|
job['payload']['class'] == 'SendEmailNotifications' && job['exception'] == 'Net::SMTPServerBusy'
end
Se você quiser pular tarefas que já foram tentadas novamente
retry_if do |job|
if job['payload']['class'] == 'SendEmailNotifications' && job['exception'] == 'Net::SMTPServerBusy'
if !job['retried_at']
next true
end
end
false
end