Skip to content

Mit Emacs (und Tramp und Leiningen und Noir) in den Webentwicklungsflow kommen

Meine gegenwärtige Entwicklungsumgebung sieht so aus, dass ich das bereits vorgestellte Screen nutze, um den Jetty-Server laufen zu lassen.

Mittels Tramp ändere ich in meinem lokal laufenden die Source-Dateien auf dem Server.

Noir sorgt automatisch dafür, dass die Änderungen sofort (d.h. nach einem Browserrefresh) sichtbar werden.

Man kann natürlich alles direkt am Server entwicklen. Dazu fehlt mir allerdings die entsprechende Emacs-Installation am Server. Und ohne die will ich nicht.

Was aber noch zusätzlich geht ist lein swank in einer zusätzlichen shell-Session am Server zu starten. Dann kann man mit einem lokal laufenden Emacs per slime auf diesen -Server zugreifen. Der Aufruf, mit dem ich das schon erfolgreich versucht habe ist lein swank 4005 0.0.0.0 – damit lauscht swank an allen Adressen auf Port 4005. Aus Sicht der Security ist das sicherlich sehr problematisch, denn es gibt keine Passwortabfrage und soweit ich das ermitteln konnte, gibt es auch keine Kontrolle des ssh-Schlüssels. (Falls hier jemand einen Verbesserungsvorschlag hat: Her damit!)

Da jetzt der Web-Server und swank gleichzeitig laufen, kann man in der Swank-Session Anwendungsteile direkt am Server in einer REPL testen (z.B. Datenbankzugriff mit dem produktiven Datenbestand). Wenn man eine source-Datei per auf den Server nach erfolgreichem Testen zurückschreibt, übernimmt automatisch diese Änderungen.
Man sollte ein wenig darauf aufpassen, dass man eine Source-Datei nicht in einem inkonsistenten, /REPL-getriebenen Zustand auf den Server speichert. Aber im Entwicklunsbetrieb ist das auch nicht wirklich ein Problem.

Es ergibt sich eine Entwicklung „am lebenden Objekt“ und eine sehr kurze (vielleicht schon minimale) Entwicklungsschleife.

Post a Comment

Your email is never published nor shared. Required fields are marked *