docbrown/app/workers/users/delete_worker.rb
rhymes 8b60a18735
Account deletion email: serialize only user's details (#9752)
* Account deletion email: serialize only user's details

* Fix specs and mailer preview
2020-08-13 18:31:56 +02:00

24 lines
844 B
Ruby

module Users
class DeleteWorker
include Sidekiq::Worker
sidekiq_options queue: :high_priority, retry: 10
def perform(user_id, admin_delete = false) # rubocop:disable Style/OptionalBooleanParameter
user = User.find_by(id: user_id)
return unless user
Users::Delete.call(user)
return if admin_delete || user.email.blank?
# at this point the user object is already destroyed on the DB,
# thus we pass the data we need to render to deliver the email, not the
# whole object
NotifyMailer.with(name: user.name, email: user.email).account_deleted_email.deliver_now
rescue StandardError => e
DatadogStatsClient.count("users.delete", 1, tags: ["action:failed", "user_id:#{user.id}"])
Honeybadger.context({ user_id: user.id })
Honeybadger.notify(e)
end
end
end