Class: QueuedMail::Job

Inherits:
Object
  • Object
show all
Defined in:
lib/queued_mail/job.rb

Class Method Summary collapse

Class Method Details

.mailerObject



28
29
30
# File 'lib/queued_mail/job.rb', line 28

def self.mailer
  @mailer ||= instance_eval(Rails.application.config.mail_queue_outbound_mailer)
end

.perform(args) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/queued_mail/job.rb', line 5

def self.perform(args)
  retried = 0
  begin
    message = QueuedMail::Message.find(args["message_id"].to_i)
  rescue ActiveRecord::RecordNotFound => e
    if retried < retry_limit
      retried += 1
      sleep retry_interval
      retry
    else
      raise e
    end
  end
  
  message.with_lock do
    mailer.original_email(message).deliver
    message.destroy
  end
rescue ActiveRecord::RecordNotFound => e
  Rails.logger.error e.message
  # nothing raises
end

.retry_intervalObject



36
37
38
# File 'lib/queued_mail/job.rb', line 36

def self.retry_interval
  Rails.application.config.mail_queue_retry_interval
end

.retry_limitObject



32
33
34
# File 'lib/queued_mail/job.rb', line 32

def self.retry_limit
  Rails.application.config.mail_queue_retry_limit
end