Class: Sidekiq::DelayExtensions::DelayedMailer

Inherits:
GenericJob
  • Object
show all
Extended by:
Sidekiq::DelayedTestingExtensions
Defined in:
lib/sidekiq/delay_extensions/action_mailer.rb

Overview

Adds delay, delay_for and delay_until methods to ActionMailer to offload arbitrary email delivery to Sidekiq.

Examples:

UserMailer.delay.send_welcome_email(new_user)
UserMailer.delay_for(5.days).send_welcome_email(new_user)
UserMailer.delay_until(5.days.from_now).send_welcome_email(new_user)

Instance Method Summary collapse

Methods included from Sidekiq::DelayedTestingExtensions

jobs_for

Methods inherited from GenericJob

#perform

Instance Method Details

#_perform(target, method_name, *args, **kwargs) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/sidekiq/delay_extensions/action_mailer.rb', line 16

def _perform(target, method_name, *args, **kwargs)
  msg =
    if kwargs.empty?
      target.public_send(method_name, *args)
    else
      target.public_send(method_name, *args, **kwargs)
    end
  # The email method can return nil, which causes ActionMailer to return
  # an undeliverable empty message.
  if msg
    msg.deliver_now
  else
    raise "#{target.name}##{method_name} returned an undeliverable mail object"
  end
end