class SidekiqSimpleDelay::SimpleDelayedMailer

Worker that handles the simple_delayed functionality for ActionMailers

Public Instance Methods

perform(args) click to toggle source
# File lib/sidekiq_simple_delay/delayed_mailer.rb, line 10
def perform(args)
  target_klass = Object.const_get(args.fetch('target_klass'))

  method_name = args['m']
  method_args = args['args']

  msg = target_klass.__send__(method_name, *method_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

  deliver(msg)
end

Private Instance Methods

deliver(msg) click to toggle source
# File lib/sidekiq_simple_delay/delayed_mailer.rb, line 27
def deliver(msg)
  if msg.respond_to?(:deliver_now)
    # Rails 4.2/5.0
    msg.deliver_now
  else
    # Rails 3.2/4.0/4.1
    msg.deliver
  end
end