1. Typologie des générateurs
Les éléments suivants précisent les informations de l'article Génération des pages.
- Les composants
Les composants sont des bouts de code assurant une fonction générique. Ils sont intégrables dans les générateurs de site ou dans les autres composants. Ils peuvent être écrits HAML avec du code Ruby ouvert ou en langage GAL.
- Les vues
Les vues génèrent chacune un type de pages d'un site.
- Les vues d'espaces génère une page associée à un espace, défini par la variable @space.
- Les vues d'œuvres génère une page associée à une œuvre, définie par la variable @work.
- Les gabarits
Un gabarit génère un cadre de pages dans lequel s'insère une vue. Un gabarit peut lui-même référencer un autre gabarit dans lequel il s'insèrera.
- Les gabarits de site
- Les gabarits communs
- Les partiels
Les partiels sont des bouts de codes référencés par une vue, un gabarit, un composant, voire un autre partiel.
- Les partiels de site
- Les partiels de composant
- Les fantômes
Les fantômes ne génèrent rien et n'ont donc pas de code. Ils sont là pour référencer les moules associés aux espaces redirigés.
Le code des générateurs propres à un site est normalement écrit en langage protégé GAL ; seul un super-administrateur peut mettre en place une fichier source en HAML.
Voir aussi l'article Écriture des générateurs de site pour le langage des générateurs du projet A (GAL) et celui sur le langage de vues HAML.
2. Objectifs
Comme les vues de Ruby on Rails dont ils sont des déclinaisons, les générateurs du projet A ont été conçus pour produire les pages des différents sites avec deux autres objectifs principaux :
- Assurer la sécurité en cloisonnant chaque site par une limitation d'accès des concepteurs et des administrateurs de site aux fichiers source de leurs suls générateurs ;
- Réutiliser des briques logicielles mises en commun, les composants.
La gestion intelligente des générateurs dans le projet vise en outre plusieurs objectifs secondaires :
- Simplifier l'écriture des générateurs de site en limitant les connaissances nécessaires à un concepteur de site dont les compétences sont celles d'un concepteur Web, en aucun cas celles d'un développeur Ruby on Rails ;
- Tracer les dépendances entre les générateurs pour évaluer les impacts des modifications, surtout celles des composants, et pour en faciliter ainsi la maintenance ;
- Référencer la bibliothèque des composants, documentation de référence des concepteurs de site ;
- Documenter les sites pour donner une vision claire de leur structure et pour en faciliter ainsi la maintenance ;
- Faciliter la gestion de la base de données dont l'accès se réalise au travers des composants et des assistants communs.
3. Problèmes
Pour remplir les objectifs précédents, la gestion des générateurs du projet A doit résoudre plusieurs catégrories de problèmes :
- Le contrôle de l'écriture des générateurs de site que l'article sur le sujet analyse et propose en conséquence leur écriture dans le langage spécifique GAL, dérivé simplifié et adapté du HAML ;
- La mécanique de gestion des générateurs et celle de la production des pages servies aux internautes ;
- Le contrôle structurel des générateurs étection des boucles tels que le respect de règles de gestion propres à chaque type de générateurs ou la détection de boucles (A appelle B qui appelle A) par exemple ;
- La redondance des informations entre la table generators et les fichiers sources.
4. Solutions
Pour atteindre les objectifs fixés et pour résoudre les problèmes qui se posent, plusieurs principes seront mis en œuvre en de multiples actions :
4.1. Partir des sources et ajuster la base de données
La déclaration d'un générateur dans la base de données permet d'en initialiser le fichier source, puis de le retrouver, car son chemin d'accès est défini à partir du nom du site et de celui du générateur. À partir de là, les principales informations structurelles sont extraites des fichiers source pour être copiées en base pour faciliter leur analyse et leur consultation.
Le renseignement de la description et des paramètres des divers composants communs et générateurs de sites à partir des fichiers source facilitera le transfert des informations de la plateforme de développement vers celle de production.
4.2. Modèle des données
La table generators enregistre les informations clés de chaque générateur : nom, type, site d'appartenance (non défini pour les générateurs communs), catégories (étiquettes), description sommaire, règles d'usage, positionnement et remarques de gestion.
La table compositions permet d'enregistrer les associations réflexives entre les générateurs : lequel appelle lequel et réciproquement.
Voir l'article sur la stucture des données et le fichier PDF détaillé qu'il référence.
4.3. Publication de la bibliothèque des composants communs
La documentation de référence des composants communs sera publiée à la rubrique Les composants du site portail http://a-io.eu.
Ses pages seront générées à partir de composants spéciaux qui fusionneront les informations de la base de données sur les générateurs ainsi que des articles sur les composants éponymes, articles qui ajouteront des explications complémentaires, des cas d'utilisation et des illustrations.
4.4. Documentation des sites
Par la suite, ces mêmes composants spéciaux de la bibliothèque devra permettre la réalisation de vues spécifiques pour l'écriture en bonne partie automatique de la documentation d'un site.
Outre depuis les données sur les générateurs, la documentation sera générée à partir de l'arbre des espaces ainsi que des moules de saisie et de leur aide associée.
Là encore, quelques articles manuels ajouteront les règles de gestion propre au site, des commentaires et des illustrations.
4.5. Mécanique de gestion et de production
Dans l'application projet_a, la mécanique de gestion des générateurs et, à partir d'eux, de production des pages servies aux internautes continuera à être assurée par deux contrôleurs, respectivement GeneratorsController et SeeController. Le premier fera appel à des assistants pour le contrôle de syntaxe des fichiers source et des paramètres d'appel entre composants ainsi que pour l'extraction des informations structurelles et documentaires et leur recopie en base.
Lors de leur introduction sur le système ou de leur modification en ligne, les fichiers source écrits en langage GAL seront immédiatement compilés en langage HAML pour être utilisé par la chaine normale de Ruby on Rails pour la génération des pages HTML.
Dans une phase ultérieure, on pourra ajouter un assistant à l'écriture du code source, statique puis interactif.