3scale/porta

View on GitHub
app/workers/send_user_invitation_worker.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

class SendUserInvitationWorker < ApplicationJob
  queue_as :default

  RETRY_ERRORS = [
    OpenSSL::SSL::SSLError,
    Net::SMTPAuthenticationError,
    Net::SMTPFatalError,
    Net::SMTPServerBusy,
    Net::SMTPSyntaxError,
    Net::SMTPUnknownError,
    Net::SMTPUnsupportedCommand,
    SocketError
  ].freeze

  rescue_from ActiveJob::DeserializationError do |e|
    logger.error("SendUserInvitationWorker#perform raised #{e.class} with message #{e.message}")
  end

  def perform(invitation)
    mailer = invitation.account.provider? ? ProviderInvitationMailer : InvitationMailer
    mailer.invitation(invitation).deliver_now!

    invitation.update(sent_at: Time.zone.now)
  rescue *RETRY_ERRORS => e
    logger.error("SendUserInvitationWorker#perform raised #{e.class} with message #{e.message}")
    retry_job
  end
end