Wenn man in der Storefront an einem eignem JavaScript-Plugin arbeitet ist es beim Debuggen, oft nervig, dass der JavaScript Code nicht direkt lesbar ist. Oft weiß man beim eigenen Code direkt was los ist, aber gerade wenn 3rd Party Plugins auch mit rein spielen, kommt man nicht drum herum sich Exceptions mit lesbaren Stacktrace anzeigen zu lassen.
Das ist zum Glück extrem einfach:
* Port 9998 aus dem Docker-Container durchleiten
* Dem SalesChannel in dem man entwickelt die Domain "localhost" zu ordnen
* das Script bin/watch-storefront.sh starten
Nun kann man localhost:9998 im Browser aufrufen. Der JavaScript Code ist lesbar und Änderungen werden sofort übernommen ohne dass man die Storefront neu bauen muss.
Heute habe ich mal wieder gelernt wie doof es ist, wenn man keine Kopie des produktiven Servers hat und die Entwicklungsumgebungen im Gegensatz zum Server immer mal wieder aktualisiert wurden. Der Server lief mit PHP 5.3 und alle anderen hatten 5.5 oder schon 5.6.
Es kam wie es kommen musste: Auf dem Server trat ein Fehler auf, der lokal bei niemanden reproduziert werden konnte. Wo der Fehler genau auftrat war unklar und nur Debuggen konnte da helfen. Zum Glück gab es einen Test-Server für die Anwender und Kunden den man verwenden konnte. Aber es man musst trotzdem Remote Debuggen.
Uns hat der Blog Post "Remote debugging with PHPStorm and Xdebug" von Marco Bunge da sehr geholfen.
Ich guck mal ob ich ähnliches auch noch mal für Eclipse mit PDT in den nächsten Wochen zu Stande bekomme.. leider sind es mal wieder zu viele Projekte gerade, wo von aber zum Glück zwei erledigt sind und ich mich ab Mitte März wieder meinen zwei Hauptprojekten widmen kann und auch wieder mehr Zeit für den Blog haben sollte.
Wenn man an Routen im Zend Framework 2 z.B. die Markierung der aktiven Seite im Navigationsmenü fest macht, ist es oft gut zu wissen welche Route greift. Wenn eine Markierung fehlt oder falsch gesetzt ist, kann man sich entweder durch die Routen-Definition suchen und so heraus finden in welche andere Route das Request lief oder man kann sich auch direkt ausgeben lassen welche Route gerade gewählt wurde. Für Debugging eine sehr praktische Sache.