Frage

Was ist der schnellste Weg, um eine Erlang -Anwendung zu bearbeiten, den Code zu kompilieren und das laufende Ergebnis zu sehen? Vorzugsweise im letzten Schritt in die Erlang -Hülle springen.

Mein aktuelles Neuling Setup:

  • Ein Skript, das die App kompiliert und die ERL -Shell startet.
  • Dann tippe ich die Anwendung ein: starten (foo).
  • Wenn ich ein Tippfehler behebte, kompile ich das Modul mit C ('Modul') und starten Sie die App neu.

Gibt es einen schnelleren Weg? Übrigens. Mein Herausgeber der Wahl ist EMACs.

War es hilfreich?

Lösung

Hier ist mein Setup:

  • Während der Entwicklung halte ich die Erlang -Schale in einem separaten Terminalfenster offen.
  • Ich beginne die Zusammenstellung vom Editor (unter Verwendung einer Schlüsselkombination) oder einfach nur durch Eingabe make im Quellverzeichnis.
  • Nach der Zusammenstellung lade ich alle geänderten Module gleichzeitig durch Eingabe l() in Erlang Shell. Sie können dies und einige andere nützliche Makros hier finden: http://www.snookles.com/erlang/user_default.erl

Es besteht selten die Notwendigkeit, die gesamte Erlang -Anwendung neu zu starten. Das Nachladen geänderter Module ist ein häufigerer Anwendungsfall, der normalerweise ausreicht, um Ihre Änderungen anzuwenden.

In Bezug auf Anwendungsstart: Wenn Ihre Anwendung von anderen Anwendungen abhängt, fehlschlägt die Anwendung: start () fehl, bis Sie alle Abhängigkeiten starten. Aus diesem Grund ist es üblich, eine Helferfunktion zu schreiben <your-app-name>:start(). Hier ist ein Beispiel. Eine andere nützliche Funktion ist <your-app-name>:stop().

Bei all diesen angewandten Techniken würde ein Workflow so aussehen:

  • Starten Sie die Erlang -Hülle und halten Sie sie offen; Typ<your-app-name>:start().
  • Änderungen vornehmen; Kompilierung von Lauf; Typ l() in deiner Erlang -Hülle.
  • Wenn Änderungen anwendbar neu gestartet werden müssen, geben Sie an <your-app-name>:stop(), <your-app-name>:start().

Andere Tipps

Sie könnten sich ansehen Bewehrung als Bauwerkzeug. make:all/0 und das Ganze machen Das Modul könnte auch helfen. So explizit ein Modul aus der Shell neu laden, die Sie verwenden können l(Module). Schließlich könnten Sie auch daran interessiert sein, einen Erlang zu erstellen Veröffentlichung So "alle Ihre Erlang -Anwendungen einwickeln".

Bearbeiten und Kompilieren erfolgen von der IDE (Eclispe mit Erlide), die ich verwende.

Ich habe auch ein Skript erstellt, das die VM meine Anwendung und hilfreiche Tools startet. Das Skript wird nur für die Dev -Zeit verwendet.

Zum Nachladen der geänderten Quellen und dann verwende ich den Reloader von Mochiweb. Der Reloader beobachtet das Bin Dir. Wenn sich Änderungen vorliegen, lädt er die Moduls und führt die Eunit -Tests aus, wenn Sie einige im Inneren haben.

Beispiel:

ERL +A 5 +K TRUE -NAME @127.0.0.1 -PA $ PWD/EBIN $ PWD/TEST $ PWD/DEPS/*/EBIN -BOOT START_SASL -S RELOADER -S TOOLBAR -SOLBAR -S

Was Sie auch versuchen können, ist Erlbuild. Erlbuild ist eine einfache Anwendung, die im SRC -Verzeichnis nach geänderten Quelldateien aussieht und wenn sie einige Dateien findet, als die Module erneut kompiliert und laden. Nach dem Laden der Module führt Erlbuild die Tests der Module aus.

Sie finden das Projekt unter: https://github.com/ulfa/erlbuild

~ Ulf

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top