Class: Sidekiq::Defer::DelayedMailer

Inherits:
Object
  • Object
show all
Includes:
Job
Defined in:
lib/sidekiq/defer/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

Instance Method Details

#perform(yml) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/sidekiq/defer/action_mailer.rb', line 18

def perform(yml)
  (target, method_name, args) = YAML.safe_load(yml, permitted_classes: [Symbol])
  msg = target.public_send(method_name, *args)
  # The email method can return nil, which causes ActionMailer to return
  # an undeliverable empty message.
  raise "#{target.name}##{method_name} returned an undeliverable mail object" unless msg

  msg.deliver_now
end