Versionner ses scripts de seeding avec versioned_seeds
Publié le 07 décembre 2011 à 00:00 - Général
Si vous vous retrouvez dans le besoin de faire des imports de données ou des insertions scriptées dans une application Rails, de nos jours vous n’avez pas vraiment d’autre choix que de créer des tâches rake (ou consorts) pour le faire.
Dans cette idée, j’ai écrit la gem versioned_seeds qui permet de stocker ces scripts dans un dossier spécifique et de les utiliser à la manière des migrations.
Son installation se fait grâce à l’ajout de la ligne suivante dans votre Gemfile :
gem 'versioned_seeds', require: false
Le principe est simple, vous appelez un générateur qui va créer au besoin le dossier et un script dans celui ci. Le nom du script commence par un timestamp, comme les migrations, ce qui va permettre à versioned_seeds de l’enregistrer et de ne pas l’exécuter plusieurs fois.
rails g versioned_seeds:seed_file nom_du_script
create db/seeds
create db/seeds/20111207201942_nom_du_script.rb
Vous n’avez plus qu’à écrire votre script puis, une fois terminé, à appeler une tâche rake qui va l’exécuter:
rake vs:next
Cette tâche va trouvé le prochain script non chargé jusqu’à présent et le lancer. Si vous avez généré plusieurs scripts, vous pouvez faire appel à
rake vs:all
Qui va les lancer un-à-un.
Pour savoir où vous en êtes de vos scripts, vous pouvez faire appel à
rake vs:status
Pour connaitre la version du dernier script chargé.
Pensez simplement à ignorer le fichier .versioned_seeds dans Git, il sert à stocker la liste des scripts déjà lancés et il ne doit pas être versionné puisqu’il est spécifique à chaque machine.
Le code est disponible sur Github et la gem sur rubygems.org.
blog comments powered by Disqus