Itération 12

Situation au 21 juillet 2025

Trop de méthodes répondent à des questions proches, tournant autour de “cet objet doit-il être envoyé en ligne ?”. Il faut rationaliser pour avoir des sources de vérité unique, en simplifiant, et sans perdre de fonctionnalité.

syncable?

L’objet doit-il (globalement) aller sur Git
=> renommé can_have_git_file?

exportable_to_git?

Localization du website non exportable ? + category exportable ?
=> renommé should_sync_to?(website)

published_in?(website)

Logique algo (ex: est-ce que l’événement est autorisé dans le website)
=> fusionné dans la nouvelle should_sync_to?(website)

for_website?

Autre logique algo (ex: est-ce que l’événement est autorisé dans le website) => fusionné dans la nouvelle should_sync_to?(website)

path is empty

Logique applicative (les early return si pas published? par exemple). => supprimé. Le path est maintenant toujours rempli, même si la page n’est plus publiée.

is_necessary_for_website?

Uniquement pour les pages spéciales. Conditionne leur création.
=> renommé should_create_special_page?

La question du syncable_only

Cas d’usage

On gère le cas du block :

  • qui n’a pas de git file
  • qui peut être publié ou pas
  • et qui a des dépendances.

Concrètement :

  • si le bloc est publié, il faut suivre ses dépendances
  • si le bloc n’est pas publié, il faut s’arrêter là

Problème

Dans le calcul des dépendances, on se fiche de la présence ou de l’absence de git_file, on veut juste parcourir récursivement les objets qui doivent être envoyés sur le site. Il faut utiliser published? pour vérifier si on creuse encore. Le website, le menu ne répondent pas à published?

On essaie là d’enlever tous les appels aux méthodes de synchronisation. La liste de dépendances ne doit pas mélanger le syncable. Par contre on doit vérifier si les objets sont publiés.

Nouvelle structure simplifiée

can_have_git_file?

Renvoie un simple booléen (ou n’existe pas).
Soit l’objet ne l’implémente pas, et le try(:can_have_git_file?) renvoie false.
Soit l’objet l’implémente spécifiquement, comme les Blobs.
Soit l’objet override la méthode pour indiquer une absence, comme les Alumni.

should_sync_to?(website)

Méthode avec logique contextuelle

should_create_special_page?

Uniquement pour les pages spéciales. Conditionne leur création