Hot Reload für die Plugin-Entwicklung?

Hallo zusammen. Entschuldigung, falls dies bereits behandelt wurde (ich habe es nicht gefunden):

Die Entwicklung eines Discourse-Plugins auf meinem lokalen Rechner ist ziemlich langsam. Jeder Neuladevorgang meiner lokal laufenden Anwendung (um Code-Änderungen anzusehen) dauert über 5 Sekunden. Also ändere ich etwas in einer HTML-/HBS- oder JS-Datei, speichere, muss dann die App neu laden [edit: den Browser aktualisieren] und 5+ Sekunden warten, um die Änderung zu sehen.

Gibt es eine Möglichkeit, ein Hot-Reload (also automatische Aktualisierung der lokalen Ansicht) für die lokale Discourse-Plugin-Entwicklung zu nutzen?

Es scheint, als würden CSS-Dateien automatisch aktualisiert, aber keine HTML-/HBS- oder JS-Dateien.

Obwohl ich darauf achte, ob es irgendwelche Hinweise gibt, denke ich, dass es einfach so ist. Und soweit ich das beurteilen kann, ist es auf einem Mac viel schlimmer.

2 „Gefällt mir“

Hey Leute,

Ihr müsst den Server wahrscheinlich nur dann neu starten, wenn sich eure API geändert hat – also euer Ruby on Rails-Code.

Wenn ihr nur JavaScript- oder HBS-Dateien geändert habt, könnt ihr die Änderungen einfach durch ein Aktualisieren des Browsers übernehmen.

Ihr werdet sicher schon bemerkt haben, dass Änderungen an CSS-Dateien nicht einmal das erfordern! :slight_smile:

3 „Gefällt mir“

Ich spreche hier vom Neuladen des Browsers und ob Hot Reload verfügbar ist, um dies zu vermeiden. Das Neuladen des Browsers dauert nämlich über 5 Sekunden, bis eine Änderung sichtbar wird.

Wenn ich den Server stoppen und neu starten muss (z. B. bei Änderungen an plugin.rb), dauert das wahrscheinlich 60 Sekunden.

Hot Reload ist heutzutage bei vielen Technologien der Standard für die Entwicklung (ich bin am besten mit Angular vertraut, das diesen Standard hat) und ist für die Entwicklung fantastisch. Ich glaube, bei Rails ist das über Webpack möglich (bin mir aber nicht sicher). Mein Eindruck ist, dass Hot Reload für die Entwicklung von Discourse nicht verfügbar ist, aber ich wollte nachfragen, weil es toll wäre, wenn es das gäbe.

Sie müssen den Browser neu laden, um die aktualisierten JavaScript-Dateien zu übernehmen.

2 „Gefällt mir“

Dies wird mit EmberCLI: Coming to a Discourse near you! verfügbar sein.

8 „Gefällt mir“

Tatsächlich können Sie Ember CLI bereits jetzt mit dem aktuellen Discourse verwenden, um dieses Verhalten zu erhalten!

6 „Gefällt mir“

Das klingt super, danke. Um das für die lokale Entwicklung zu nutzen, muss ich dann noch etwas anderes tun, als die neueste Version von Discourse von GitHub auf meinen Computer herunterzuladen?

1 „Gefällt mir“

Du musst dir das neueste Discourse ansehen und dann so etwas wie Folgendes tun:

  1. Starte den API-Server: rails s

  2. Starte den Ember-Server:

    1. Wechsle in den richtigen Ordner cd app/assets/javascript/discourse
    2. Installiere die Pakete yarn
    3. Führe Ember CLI aus: ember serve --proxy "http://localhost:3000"

Anschließend kannst du http://localhost:4200 öffnen und solltest mit Hot Reloading in Ember CLI laufen.

8 „Gefällt mir“

Ich hatte große Freude daran, meine lokale Discourse-Instanz zu aktualisieren, und betreibe jetzt lokal Version 2.8. Allerdings funktioniert das Hot-Reload für HTML- und JS-Änderungen noch nicht.

So starte ich die Anwendung:

In den Discourse-Ordner wechseln

$ redis-server //Startet den Server

$ rails s //Startet die Rails-Anwendung

$ yarn //Diesen Befehl sollte man nur beim ersten Mal ausführen, nehme ich an

$ bin/ember-cli //Startet Ember CLI. Der Befehl ember serve --proxy "http://localhost:3000" hat aus irgendeinem Grund Fehler ausgegeben

Die Anwendung läuft erfolgreich unter localhost:4200.

Ich habe ein Plugin in die lokale Discourse-Instanz integriert, das erfolgreich unter localhost:4200 angezeigt wird. Wenn ich jedoch Änderungen an den HTML- oder JS-Dateien vornehme, werden diese Änderungen nur angezeigt, wenn ich den Browser neu lade.

Muss ich noch etwas anderes tun, damit das Hot-Reload funktioniert?

2 „Gefällt mir“

Hallo. Ist Hot-Reload mit ember-cli in Discourse verfügbar? Ich habe immer noch das gleiche Problem, das ich in meinem vorherigen Beitrag erwähnt habe. Nach Befolgen dieser Schritte erhalte ich immer noch kein Hot-Reload (d. h. ich muss den Browser immer noch aktualisieren, um Änderungen an HTML und JavaScript zu sehen, und die Ausgabe von ember-cli im Terminal scheint nicht zu registrieren, wenn ich nach einer Dateispeicherung auf Speichern klicke).

Hot-Reloading funktioniert bei mir weiterhin nicht. Muss ich über diese Schritte hinaus noch etwas unternehmen?

Ich mache folgendes:

./bin/rails s

in einem Terminal und

./bin/ember_cli

in einem anderen.

Ja, danke. Das mache ich auch. Bekommst du auch ein automatisches Neuladen (Hot Reloading) für HTML- und JS-Dateien?

Meinst du hbs-Dateien?

Ja, ich verstehe nicht, was im Browser als „LiveReload" bezeichnet wird, obwohl?:

image

Und das Vorhandensein von:

<script type="text/javascript" src="http://localhost:4200/_lr/livereload.js?port=4200&amp;host=localhost&amp;path=_lr/livereload"></script>

und

<script src="/ember-cli-live-reload.js" type="text/javascript"></script>

Ja – ich meinte HBS-Dateien.

Ich würde es wirklich sehr begrüßen, wenn ein Live-Reload möglich wäre (besonders für JavaScript-Dateien). Wenn ich in anderen Umgebungen arbeite, in denen Live-Reload Standard ist, beschleunigt es den Programmierprozess erheblich und macht ihn viel angenehmer.

1 „Gefällt mir“

Einige zusätzliche Informationen:

ember-cli/ember-cli-inject-live-reload: Ember-CLI-Plugin, das ein Live-Reload-Skript in den HTML-Inhalt einfügt (github.com)

" livereload.js initiiert eine WebSocket-Verbindung zurück zu Ember CLI. Dies ermöglicht es Ember CLI, den Browser zu benachrichtigen, um nach Änderungen an JavaScript oder Styles eine Aktualisierung auszulösen."

Ich bin neugierig, warum der Browser dies ignoriert – ich frage mich, ob es eine Option im Browser im Zusammenhang mit der Site-Sicherheit gibt?

Ich bin mir nicht sicher, aber ich konnte Live-Reload im Browser in anderen Kontexten bzw. anderen Frameworks definitiv nutzen. (Bezüglich Ember bin ich mir nicht sicher – ich habe es bisher nur bei der Entwicklung von Discourse-Inhalten verwendet.)

Mich interessiert, ob Live-Reload erwartet wird. Aus der vorherigen Diskussion scheint das der Fall zu sein. In diesem Fall frage ich mich, ob das Discourse-Team Live-Reload nutzt und ob sie etwas tun, was ich nicht tue.

1 „Gefällt mir“

Das Vorhandensein der Skripte ist sicher ein Zeichen von Absicht – nichts hier ist zufällig.

Ich frage mich daher, ob es sich um ein Problem mit der lokalen Browserkonfiguration oder um ein anderes Konfigurationsproblem handelt.

Mehr zu livereload.js: livereload/livereload-js: LiveReload JavaScript-Code, der mit dem Server kommuniziert und das Neuladen implementiert (github.com)

Es wäre sicher schön, eine offizielle Aussage zu erhalten, inwieweit Livereload hier funktionieren sollte und ob es über CSS auf der Client-Seite hinausgeht.

1 „Gefällt mir“

Das automatische Neuladen der Seite wird von ember CLI übernommen. Derzeit werden Theme- und Plugin-Assets von der Rails-Anwendung kompiliert und bereitgestellt, nicht von ember CLI. Daher führen Änderungen am Theme oder an Plugins nicht zu einem automatischen Neuladen der Seite.

Dies könnte etwas sein, das wir in Zukunft verbessern können. Aber derzeit ist dieses Verhalten erwartet.

5 „Gefällt mir“