Question

Quel est le meilleur moyen de modifier une application Erlang, compiler le code et voir le résultat de la course? De préférence, le saut dans l'enveloppe Erlang sur la dernière étape.

Ma configuration actuelle newbie:

  • Un script qui compile l'application et démarre le shell ERL.
  • Puis je tape dans l'application. Démarrage (foo)
  • Lorsque je fixe une faute de frappe, je recompiler le module avec c ( « module ») et redémarrez l'application.

Y at-il un moyen plus rapide? BTW. mon éditeur de choix est Emacs.

Était-ce utile?

La solution

Voici ma configuration:

  • Lors du développement, je garde le Erlang shell ouvert dans une fenêtre de terminal séparé.
  • Je commence la compilation de l'éditeur (en utilisant une combinaison de touches), ou tout simplement en tapant make dans le répertoire source.
  • Après la compilation, je charge tous les modules modifiés à la fois en tapant dans l() shell Erlang. Vous pouvez trouver cela et d'autres macros utiles ici: http://www.snookles.com/erlang/ user_default.erl

Il est rarement nécessaire de redémarrer l'ensemble de l'application Erlang. Rechargement modules modifiés est plus fréquent cas d'utilisation et il est généralement suffisant pour appliquer vos modifications.

En ce qui concerne démarrage de l'application: si votre application dépend d'autres applications, l'application: start () échouera, jusqu'à ce que vous commencez à toutes les dépendances. À cause de cela, il est courant d'écrire une fonction d'aide <your-app-name>:start(). Voici un exemple . Une autre fonction utile est <your-app-name>:stop().

Avec toutes ces techniques appliquées, un workflow ressemblerait à ceci:

  • Démarrez le shell Erlang et le garder ouvert; type<your-app-name>:start().
  • changements; exécuter la compilation; entrez l() dans votre shell Erlang.
  • Lorsque des modifications requièrent le redémarrage de l'application, le type <your-app-name>:stop(), <your-app-name>:start().

Autres conseils

Vous pouvez regarder barres d'armature comme un outil de construction. make:all/0 et l'ensemble faire le module pourrait aider aussi. Pour recharger explicitement un module à partir du shell que vous pouvez utiliser l(Module). Enfin, vous pourriez également être intéressé par la création d'un Erlang pour libérer « wrap » tous vos applications Erlang.

l'édition et la compilation est fait par l'EDI (avec Eclispe erlide) que je l'utilise.

J'ai aussi créé un script qui démarre la machine virtuelle mon application et des outils utiles. Le script est utilisé uniquement pour le temps de dev.

Pour les sources modifiées rechargeant puis compilées bacs, j'utiliser le reloader de mochiweb. Le reloader observe le bac dir et s'il y a des changements, il charge les moduls et exécute les tests de eunit, si vous avez un intérieur.

Exemple:

ERL + A 5 + K vrai -nom @ 127.0.0.1 -PA $ PWD / ebin $ PWD / test $ PWD / DEPS / * / ebin -boot start_sasl -s reloader -s -s barre d'outils

ce que vous pouvez également essayer est erlbuild. Erlbuild est une application simple qui regarde dans le répertoire src pour les fichiers source modifiés et si elle trouve des fichiers, qu'il compile et charger les modules à nouveau. Après le chargement des modules, erlbuild exécute les tests des modules.

Vous pouvez trouver le projet sous: https://github.com/ulfa/erlbuild

~ Ulf

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top