Ich habe gerade einen ./launcher rebuild app ausgeführt – keine Änderungen an systembezogenen Dateien. Ich hänge jetzt bei den blinkenden Discourse-Punkten.
Ich habe Folgendes überprüft:
docker ps zeigt das Discourse-App-Image an (scheint normal).
Der top-Befehl zeigt Aktivität an (scheint normal).
Ich kann den Sidekiq-Status einsehen (scheint normal).
Also habe ich die App erneut neu kompiliert.
Gleiche Ergebnisse.
Ich habe versucht, den abgesicherten Modus zu verwenden. Alles ausgeschaltet. Keine Änderung. Ich erhalte immer noch den Bildschirm mit den blinkenden Punkten.
Ich habe jede Zeile des Quellcodes überprüft. Ich sehe, dass vier JS-Dateien nicht verfügbar sind. Es sind:
Es gibt zahlreiche fehlende JavaScript-Dateien. Dies waren die ersten gefundenen.
Erste Überprüfung:
Die Dateien sind über meine CDN-Bereitstellung nicht verfügbar.
Das CDN zieht aus meinem S3-Bucket.
Die Dateien befinden sich nicht in meinem S3-Bucket, wo alle anderen Assets gespeichert sind.
Wenn ich mir die Ergebnisse des Rebuilds ansehe, sehe ich Folgendes:
Die 4 Dateien wurden erstellt und mit der Dateiendung .js in public/assets/ geschrieben.
Die 4 Dateien wurden komprimiert und mit der Dateiendung .br.js gespeichert.
Überprüfung meines Servers:
Alle 4 .js-Dateien sind auf meinem Server verfügbar.
Die .br.js-Dateien sind auf meinem Server nicht verfügbar.
Die .br.js-Dateien befinden sich nicht in meinem S3-Bucket.
Wenn ich die Rebuild-Ergebnisse durchgehe, scheint es, dass die Aktivität nach after_assets_precompile bei meinen Rebuilds nicht stattfindet. Ich kann manuell rake s3:upload_assets ausführen, die Assets werden nach S3 migriert und alles funktioniert gut.
Ich habe Folgendes überprüft:
Meine YML-Datei besteht die Prüfungen auf korrekte Formatierung.
Was kann ich überprüfen, um festzustellen, warum after_assets_precompile nicht als Teil des Rebuilds verarbeitet wird?
Hinweis: Ich verwende: 3.4.0.beta4-dev - 6a50b3d4b4
Sie finden diese Rake-Aufgabe dort und können sie dann aus dem Container heraus ausführen (um die Zeit eines Rebuilds zu sparen). Führen Sie dann einen Rebuild durch, sobald Sie Ihre yml-Datei bearbeitet haben.
S3 ist seit 43 Tagen auf der Website aktiv. Die Rake-Befehle wurden als Teil der S3-Installation dort platziert.
Die Website wurde mindestens 30 Mal neu erstellt. Ich habe im Laufe der Zeit zusätzliche Plugins und Komponenten hinzugefügt. Dies würde darauf hindeuten, dass .js-Dateien zum S3-Bucket hinzugefügt und dort abgelegt wurden.
Die S3-Komponente hat großartig funktioniert. Dies ist das erste Mal, dass ich Probleme mit Dateien hatte, die nicht nach S3 migriert wurden.
Was kann ich untersuchen, um zu verstehen, warum die Dateien nicht verschoben wurden?
Weiß jemand, was dazu führen könnte, dass after_assets_precompile nicht ausgeführt wird?
Die Echo-Anweisung erscheint nie in der Ausgabe des Neuerstellens.
Der Schritt zum Neuerstellen verarbeitet die Schritte vor und nach diesem Abschnitt in der Datei app.yml. Er verarbeitet alle Plugins und benutzerdefinierten Befehle.
Ich habe die folgenden Schritte unternommen, um zu versuchen, das Problem zu beheben:
Alle Plugins entfernt
Alle Komponenten deaktiviert
Alle Discourse-Protokolldateien überprüft. Keine Fehler angegeben gefunden.
Protokolldateien des Basissystems überprüft. Keine Fehler angegeben gefunden.
Hat jemand eine Ahnung, warum der Prozess des Neuerstellens diesen Abschnitt überspringen würde?
Zu Testzwecken habe ich die after_assets_precompile-Befehle in den benutzerdefinierten Befehlsabschnitt verschoben.
run:
- exec: echo „Beginn der benutzerdefinierten Befehle“
## Wenn Sie die E-Mail-Adresse des Absenders für Ihre erste Registrierung festlegen möchten, kommentieren Sie sie aus und ändern Sie sie:
## Nachdem Sie die erste Anmelde-E-Mail erhalten haben, kommentieren Sie die Zeile wieder aus. Sie muss nur einmal ausgeführt werden.
#- exec: rails r „SiteSetting.notification_email='info@unconfigured.discourse.org'“
## Befehl zum Passwortschutz der Website während der Arbeit. Entfernen für die Produktion.
- exec:
cd: $home
cmd:
- echo „Beginn der Precompile-Befehle“
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
- exec: echo „Ende der benutzerdefinierten Befehle“
Die Befehle funktionierten ohne Probleme. Dies schließt Probleme mit dem Umgebungzugriff oder der Sicherheit aus.
Der Launcher-Prozess überspringt den after_assets_precompile-Code während des Rebuilds.
Möglicherweise liegt ein Leerzeichen- oder Einrückungsfehler in Ihrer YAML-Datei vor. Suchen Sie nach einem Validator und überprüfen Sie: [YAML validieren]
@supermathie - du bist großartig mit unglaublichem Sehvermögen. Du hast erkannt, dass der Code nicht mit zwei Leerzeichen eingerückt war. Und das nur aus einem einzigen Ausschnitt im Gegensatz zu einem umfangreicheren Abschnitt. Danke.
Ich habe die zwei Leerzeichen hinzugefügt und das Problem damit behoben.
Ich hatte zuvor app.yml durch einen YML-Checker laufen lassen. Das Testwerkzeug sagte mir, dass die Datei strukturell einwandfrei sei. Es konnte mir nicht sagen, dass sie funktional falsch war.