= Webia / Réseaupub == Description Cette application sert à la gestion du réseau de panneaux publicitaires *Webia* dans Second Life. L'application, écrite en Ruby on Rails, fournit une interface web d'administration du réseau de panneaux, ainsi qu'une interface de type Web Services, qui répond aux requêtes, écrites en LSL, des objets Second Life. == Auteurs / Licence Copyright (C) 2007 Community Chest Auteurs : * Farzad FARID * Yves Rougy Le code de cette application est diffusé sous licence GPL 2 ou supérieure : This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA == Extensions utilisées Ce projet utilise les plugins suivants : +annotate_models+ :: Ajoute une tâche Rake qui ajoute en commentaire aux modèles la structure de données. +redhillonrails_core+ :: Plugin de base pour +foreign_key_migrations+ +foreign_key_migrations+ :: Ajout le support de la création automatique des clés étrangères dans les migrations. == Librairies et tâches maison === Tâches Les tâches sont installées dans lib/tasks ou dans vendors/plugins. documentation :: La tâche doc:app ne supporte pas les accents UTF-8 ! C'est pourquoi elle a été dupliquée en locale et modifiée pour appeler +rdoc+ avec le charset UTF-8. Un bug report a été ouvert sur Rails : http://dev.rubyonrails.org/ticket/8906. Fournit la tâche doc:app_utf8. extract_fixtures :: Tâche tirée du livre "Rails Recipes", extrait les données des tables sous forme de fixtures, dans le répertoire db/exported_fixtures. Fournit la tâche db:fixtures:extract_fixtures. *RAILS_ENV* détermine la base qui sera dumpée. load_exported_fixtures :: L'opération inverse, avec les mêmes données, qui sont importées dans la base. Fournit la tâche db:fixtures:load_extracted_fixtures. *RAILS_ENV* détermine la base qui sera dumpée. Si la variable d'environnement FIXTURES=fichier1,fichier2,... est fournie, les fichiers passés en paramètres seront utilisés, sinon la tâche utilise les fichiers du répertoire db/exported_fixtures. annotate_models :: Lancer cette tâche après toute modification des modèles. La tâche modifie tous les fichiers décrivant les modèles de la base de données, en y ajoutant des commentaires décrivant le modèle physique de chaque table. Si la base est modifiée, alors les commentaires et le numéro de version seront modifiés aussi, ce qui nécessitera de refaire un commit SVN. *IMPORTANT* : Lors de modification ou déplacement de bloc de commentaires dans la documentation des modèles, il faut penser à conserver une ligne vide après la dernière ligne "#" du bloc ajouté par +annotate_models+. === Librairies La librairie SecondLifeSimPosNormalizer contient des validateurs pour Second Life. Voir la page de SecondLifeSimPosNormalizer pour plus d'informations. == Bugs et points importants ATTENTION AUX POINTS SUIVANTS === Support des clés étrangères dans les tests rake db:test:prepare ne copie pas les contraintes de clés étrangères dans la base *_test si on garde :ruby comme schéma pour les dumps. Il faut configurer le projet pour qu'il fasse les dumps au format SQL au lieu de Ruby. Voir 'config.active_record.schema_format = :sql' dans environment.rb. === Renommage de colonnes Quand on renomme une colonne dans une migration (avec +rename_column+, on perd tous les attributs (null, default..). Il faut remettre les attributs à la main avec +change_column+, on bien ne pas utilisation les migrations. === Ajout de colonnes De même, les migrations (avec +add_column+) ne permettent d'ajouter la colonne qu'en dernière position. Il faut utiliser +execute+ et une commande SQL pour choisir l'emplacement de la nouvelle colonne. == Installation === Génération de la documentation Lancer 'rake doc:app_utf8' pour génération la documentation à partir des sources du projet.