Les développements continuent d'avancer pour la refonte en Rails de LinuxFr.org. Je me suis attaqué à un refactoring des commentaires. Les fils de discussions de LinuxFr.org sous forme d'arbres sont une des forces du site : ils permettent de suivre les discussions très intéressantes (et les trolls, bien sûr). Malheureusement, c'est aussi une structure qui se prête assez mal aux bases de données relationnelles.
J'étais d'abord sur une technique d'ensembles imbriqués (« nested set
»), avec le plugin rails awesome nested set,
mais celui-ci ne fournissait pas les méthodes qui m'intéressaient. Par exemple,
je veux pouvoir construire tout un arbre de discussions en effectuant une seule
requête SQL. J'aurais pu compléter ce plugin, mais quitte à écrire du code,
j'ai préféré partir sur une structure plus adaptée à mon cas : le chemin
matérialisé (« materialized path ») consiste à garder pour chaque
commentaire la liste de tous les IDs des commentaires parents dans un champs
sérialisé. J'ai fait cela aujourd'hui et j'ai déjà une version fonctionnelle.
La preuve en images : 
Dans les jours qui viennent, je pense me concentrer sur les dépêches et les commentaires (nettoyer le code, rajouter les fonctionnalités vraiment essentielles, corriger un ou deux bugs que j'ai remarqué, etc.). Je pourrais ensuite me pencher sur une nouvelle partie (la tribune ou le tracker, je ne sais pas encore).


