Exporter les données de votre application play! en yml


Exporter les données de votre application play! en yml


Un nouveau module pour le framework de développement play! est disponible. Celui-ci permet d'exporter les données de votre application au format YML grace à une seule ligne de commande : play yml:generate

Le format YML étant géré par le framework, ceci vous permet de sauvegarder la structure et les données de votre base de données.

Ce module peut être très pratique pour :

  • le travail en équipe : il est interressant de pouvoir partager avec son équipe de développement, la structure de la base de données avec des données exemples. Même si le framework met à jour la structure de la base de données à partir des classes Model, il ne permet pas de partager les données.
  • les test unitaires et selenium : il est interressant pour les test des applications, de charger à chaque éxecution de ceux-ci, une sauvegarde de la base de données. En effet si on a une base de données qui est toujours la même et que les tests modifient les données de la base, ceux-ci risquent (fortement) d'être en erreur

 

La sithotèque

 

Utilisation du module

Activer le module

Editer le fichier "conf/application.conf" de votre application et y ajouter les lignes suivantes :

# The logisima play ymlmodule
%test.module.logisima-yml=${play.path}/module/logisimayml

NB: Le module ne sert à rien dans un environnement de production, alors charger uniquement pour l'environnement de test en utilisant les identifiant play! (ici test).

Générer le fichier yml

Pour générer le fichier yml correspondant à votre base de données, il suffit d'utiliser la commande suivante : play yml:generate

Ceci va créer un fichier data.yml dans le répertoire conf de votre application.

Utilisez le module pour vos tests

Premièrement, utilisez la base de données Hsql chargée directement en mémoire (pas sur le file system). Editez le fichier "conf/application.conf" et modifiez ajoooutez les paramètres suivants (comme précédemment, "test" est le play ID de mon environnement de test) :

%test.db=mem

Deuxièmement, lors du démarrage de votre application, chargez le fichier YML. Vous pouvez réaliser ceci en créant la classe  suivante dans le package jobs :

package jobs;

import play.Play;
import play.jobs.Job;
import play.jobs.OnApplicationStart;
import play.test.Fixtures;

@OnApplicationStart
public class Bootstrap extends Job {

    public void doJob() {
        // ou "Play.mode == Mode.DEV" pour
        // tous les env. sauf la prod
        if (Play.id.equals("test")) {
            Fixtures.deleteAll();
            Fixtures.load("data.yml");
        }
    }
}

Et dans vos classes de test, n'oubliez d'ajouter cette methode :

@Before
public void setUp() {
    Fixtures.deleteAll();
    Fixtures.load("data.yml");
}


auncun commentaires


Poster un commentaire





Captcha