julienleicher

• ☕ 3 minutes de lecture

Développement Meteor avec Vagrant

Meteor, c’est l’un des frameworks Web à la mode qui entends réconcilier le client et le serveur, et même si c’est la première fois que j’en parle sur ce blog, je partage avec vous aujourd’hui une petite astuce pour que le développement soit sans douleur si comme moi vous êtes sous Windows.

Et oui, pas de version officielle pour Windows, il vous faudra passer par une machine virtuelle (VM) pour tester, et quoi de mieux que Vagrant pour ce job (je vous passe les détails de l’installation et de la mise en place de votre VM, il existe déjà beaucoup de ressources à ce sujet) ?

Préliminaires

Notre but, c’est d’avoir un dossier partagé avec les sources de notre application et donc de pouvoir utiliser notre éditeur de texte favori sous Windows et que le serveur derrière Meteor fonctionne comme annoncé.

J’entends par là, que les modifications soient directement répercutées sur tous les navigateurs affichant notre application sans aucune action de notre part.

Pour ceci, configurer votre Vagrantfile de manière à partager le répertoire de votre choix, dans mon cas la ligne de partage est la suivante :

# La ligne pour le partage des dossiers
config.vm.synced_folder "../meteor", "/home/vagrant/meteor"

# Et au passage, on forward le port 3000
config.vm.network "forwarded_port", guest: 3000, host: 3000

Le problème

Ok, vagrant est installé, meteor aussi (curl https://install.meteor.com/ | sh,), votre box est prête (vagrant up) ? On peut commencer !

Côté VM, dans le répertoire /home/vagrant/meteor/ :

$ meteor create mon_projet
$ cd mon_projet
$ meteor

[[[[[ ~/meteor/mon_projet ]]]]]

=> Started proxy.
Unexpected mongo exit code 100. Restarting.
Unexpected mongo exit code 100. Restarting.
Unexpected mongo exit code 100. Restarting.
Can't start Mongo server.
MongoDB had an unspecified uncaught exception.
This can be caused by MongoDB being unable to write to a local database.
Check that you have permissions to write to .meteor/local. MongoDB does
not support filesystems like NFS that do not allow file locking.

On se fait donc jeter par Mongo à cause du système de fichier de Windows qui l’empêche de démarrer correctement.

La solution

Il faut remercier Colin Sullivan pour sa solution donnée sur Github et se trouvant ici. Elle consiste à déplacer tout le contenu du répertoire /home/vagrant/meteor/mon_projet/.meteor/local vers un répertoire non partagé et donc totalement sous le contrôle de la VM et ensuite de créer un lien symbolique.

On commence donc par supprimer notre répertoire local :

$ rm -R /home/vagrant/meteor/mon_projet/.meteor/local

Ensuite on crée un répertoire dans un emplacement non partagé :

$ mkdir -p /home/vagrant/.meteor_mon_projet_local

Et on peut finir par créer le lien symbolique qui va bien :

$ ln -s /home/vagrant/.meteor_mon_projet_local /home/vagrant/meteor/mon_projet/.meteor/local

À présent, vous pouvez relancer votre projet :

$ cd /home/vagrant/meteor/mon_projet
$ meteor

[[[[[ ~/meteor/mon_projet ]]]]]

=> Started proxy.
=> Started MongoDB.
=> Started your app.

=> App running at: http://localhost:3000/

Tadammm !! Vous pouvez visiter la page avec votre navigateur, modifier les sources depuis Windows et observer les changements en temps réel !

Pour aller plus loin

Maintenant que votre environnement est prêt, c’est à vous de jouer, voici quelques ressources au passage :