Le rattrapage de donnĂ©es est le processus consistant Ă ajouter, mettre Ă jour ou transfĂ©rer certaines donnĂ©es de lâapplication. Les cas les plus courants de migration de donnĂ©es sont les suivants :
<aside> â PrĂ©-requis
Raison : Le rattrapage peut ĂȘtre long, surtout quand il y a beaucoup de donnĂ©es, donc on veut Ă©viter les traitements inutiles
â BAD
class RegenerePhotoDetoureeeManquanteJob < ApplicationJob
def perform
Vetement.find_each do |vetement|
...
end
end
end
â
GOOD
class RegenerePhotoDetoureeeManquanteJob < ApplicationJob
def perform
# on utilise un scope pour choisir les vĂȘtements
Vetement.sans_photo_detouree.find_each do |vetement|
...
end
end
end
find_each
dans les requĂȘtesRaison : ça va charger les donnĂ©es par lot qui ne va pas saturer la mĂ©moire. Alors que si vous faites un .all
sur des millions lignes, ça va saturer.
â BAD
class RegenerePhotoDetoureeeManquanteJob < ApplicationJob
def perform
Vetement.sans_photo_detouree.each do |vetement|
...
end
end
end
â
GOOD
class RegenerePhotoDetoureeeManquanteJob < ApplicationJob
def perform
# on utilise un scope pour choisir les vĂȘtements
Vetement.sans_photo_detouree.find_each do |vetement|
...
end
end
end
Raison : facilitera le dĂ©bogage et l'audit, câest plus facile Ă retrouver quand on cherche dans les logs
# Script de rattrapage pour compléter les adresses email manquantes des utilisateurs
class UserEmailDataCatchUpJob < ApplicationJob
def perform
# Log le début de l'opération
Rails.logger.info "DĂ©but du rattrapage des emails pour les utilisateurs sans email"
User.where(email: nil).find_each do |user|
if (success)
Rails.logger.info "Email mis Ă jour pour l'utilisateur #{user.id}: #{generated_email}"
else
Rails.logger.error "Ăchec de la mise Ă jour de l'email pour l'utilisateur #{user.id}: #{user.errors.full_messages.join(", ")}"
end
end
end
# Log la fin de l'opération
Rails.logger.info "Fin du rattrapage des emails"
end
end