From 5ae5de0d9c3328b5937f8c55ed158b97ea6ccc98 Mon Sep 17 00:00:00 2001 From: Colin Darie Date: Tue, 10 Jan 2023 13:58:30 +0100 Subject: [PATCH] refactor(email): log event when error occurs before recipients was set --- app/mailers/concerns/mailer_error_concern.rb | 8 ++------ app/models/email_event.rb | 4 +++- app/services/email_delivery_observer.rb | 2 -- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/app/mailers/concerns/mailer_error_concern.rb b/app/mailers/concerns/mailer_error_concern.rb index aab0e6f7b..99258b3d4 100644 --- a/app/mailers/concerns/mailer_error_concern.rb +++ b/app/mailers/concerns/mailer_error_concern.rb @@ -20,12 +20,8 @@ module MailerErrorConcern protected def log_delivery_error(exception) - if defined?(message) && message.to.present? - EmailEvent.create_from_message!(message, status: "dispatch_error") - Sentry.capture_exception(exception, extra: { to: message&.to, subject: message&.subject }) - else - Sentry.capture_exception(exception) - end + EmailEvent.create_from_message!(message, status: "dispatch_error") + Sentry.capture_exception(exception, extra: { to: message.to, subject: message.subject }) # TODO find a way to re attempt the job end diff --git a/app/models/email_event.rb b/app/models/email_event.rb index 2a2630808..53cca951d 100644 --- a/app/models/email_event.rb +++ b/app/models/email_event.rb @@ -19,7 +19,9 @@ class EmailEvent < ApplicationRecord class << self def create_from_message!(message, status:) - message.to.each do |recipient| + to = message.to || ["unset"] # no recipients when error occurs *before* setting to: in the mailer + + to.each do |recipient| EmailEvent.create!( to: pseudonymize_email(recipient), subject: message.subject, diff --git a/app/services/email_delivery_observer.rb b/app/services/email_delivery_observer.rb index a61b2e56e..c297dcf85 100644 --- a/app/services/email_delivery_observer.rb +++ b/app/services/email_delivery_observer.rb @@ -1,7 +1,5 @@ class EmailDeliveryObserver def self.delivered_email(message) - return if message.to.nil? - EmailEvent.create_from_message!(message, status: "dispatched") end end