class Sidekiq::Extensions::DelayedMailer

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

@example

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)

Public Instance Methods

perform(yml) click to toggle source
# File lib/sidekiq/extensions/action_mailer.rb, line 18
def perform(yml)
  (target, method_name, args) = YAML.load(yml)
  msg = target.public_send(method_name, *args)
  # 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