Beschleunigung des Erlang Edit-, Compile-, Run / Debug-Zyklus

8

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-Shell springen.

Mein aktuelles Anfänger-Setup:

  • Ein Skript, das die App kompiliert und die erl-Shell startet.
  • Dann gebe ich die Anwendung ein: start (foo).
  • Wenn ich einen Tippfehler korrigiere, kompiliere ich das Modul mit c ('Modul') und starte die App neu.

Gibt es einen schnelleren Weg? Übrigens. Mein Chefredakteur ist Emacs.

    
Ward Bekker 27.04.2011, 19:33
quelle

4 Antworten

12

Hier ist mein Setup:

  • Beim Entwickeln halte ich die Erlang-Shell in einem separaten Terminalfenster offen.
  • Ich starte die Kompilierung aus dem Editor (mit einer Tastenkombination) oder gebe einfach make in das Quellverzeichnis ein.
  • Nach der Kompilierung lade ich alle geänderten Module auf einmal, indem ich l() in die Erlang-Shell eintippe. Sie können dieses und einige andere nützliche Makros hier finden: Ссылка

Es ist selten erforderlich, die gesamte Erlang-Anwendung neu zu starten. Das erneute Laden geänderter Module ist ein häufigerer Anwendungsfall und reicht normalerweise aus, um Ihre Änderungen zu übernehmen.

Betreffend Anwendungsstart: Wenn Ihre Anwendung von anderen Anwendungen abhängig ist, wird die Anwendung: start () fehlschlagen, bis Sie alle Abhängigkeiten starten. Aus diesem Grund ist es üblich, eine Hilfsfunktion <your-app-name>:start() zu schreiben. Hier ist ein Beispiel . Eine weitere nützliche Funktion ist <your-app-name>:stop() .

Mit all diesen angewendeten Techniken würde ein Workflow wie folgt aussehen:

  • Starten Sie die Erlang-Shell und halten Sie sie offen; Gib 'den Code ein%
  • Änderungen vornehmen; Kompilierung ausführen; Geben Sie <your-app-name>:start(). in Ihre Erlang-Shell ein.
  • Wenn Änderungen einen Neustart der Anwendung erfordern, geben Sie l() ein.
alavrik 27.04.2011, 20:48
quelle
2

Sie können sich Betonstahl als Bauwerkzeug anschauen. make:all/0 und das gesamte Modul make könnten ebenfalls hilfreich sein. Um ein Modul explizit von der Shell neu zu laden, können Sie l(Module) verwenden. Schließlich könnten Sie auch daran interessiert sein, eine Erlang Veröffentlichung zu erstellen, die alle Ihre Erlang-Anwendungen umschließt.

    
Roberto Aloi 27.04.2011 19:57
quelle
2
Das Bearbeiten und Kompilieren erfolgt durch die IDE (Eclispe with 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 Entwicklungszeit verwendet.

Um die geänderten Quellen und die kompilierten Bins neu zu laden, verwende ich den Reloader von mochiweb. Der Reloader beobachtet das bin-Verzeichnis und wenn es Änderungen gibt, lädt es die Module und führt die eunit-Tests aus, wenn Sie etwas drin haben.

Beispiel:

erl + A 5 + K wahrname @ 127.0.0.1 -pa $ PWD / ebin $ PWD / test $ PWD / deps / * / ebin -boot start_sasl -s reloader -s toolbar -s

    
Ulf 28.04.2011 05:31
quelle
1

was Sie auch versuchen können, ist erlbuild. Erlbuild ist eine einfache Anwendung, die im src-Verzeichnis nach geänderten Quelldateien sucht und, wenn sie Dateien findet, die Module erneut kompiliert und lädt. Nach dem Laden der Module führt erbubau die Tests der Module durch.

Sie finden das Projekt unter: Ссылка

~ Ulf

    
Ulf 29.04.2011 17:03
quelle

Tags und Links