Wir haben eine benutzerdefinierte Sprockets-Direktive für das Custom Wizard-Plugin erstellt

Das Custom-Wizard-Plugin erstellt seine eigene Ember-App und nutzt einige der Assets aus dem Discourse-Kern.

Dafür verwenden wir eine JS-Datei namens wizard-custom.js mit Sprockets-Direktiven, die auf einzelne Dateien abzielen.

In einigen Fällen benötigen wir viele Dateien aus demselben Ordner und waren lange versucht, require_tree zu verwenden, was jedoch aus folgenden Gründen leider nicht möglich ist:

  • Die Datei wizard-custom.js befindet sich innerhalb des Plugins, sodass ihr load path sich von dem von Discourse unterscheidet und wir nur Dateien innerhalb des load path einbinden können.
  • Sprockets erlaubt keine absoluten Pfade bei der Verwendung von require_tree.

Eine Lösung dafür würde auch bedeuten, dass das Plugin aufgrund von Änderungen im Discourse-Kern seltener fehlschlägt.

Um dies zu umgehen, haben wir eine benutzerdefinierte Sprockets-Direktive namens require_tree_discourse erstellt, die speziell nach Assets im Discourse-Ordner unter Verwendung absoluter Pfade sucht. Hier ist der PR, der diesen Code enthält.

Ich dachte, das könnte für Discourse-Entwickler und Rails-Entwickler im Allgemeinen interessant sein.

Leider mussten wir diese Änderung zurücknehmen, da sie in der Produktion nicht funktioniert.

Es scheint, als würden die Plugins etwas später geladen als die JS-Dateien gelesen werden.

Es funktioniert. Wir werden die Änderung bald wieder einführen.

Wir haben dies endlich in unserem Code eingeführt.

Denkt daran, ich schätze, dass wir innerhalb von 12 Monaten Sprockets zugunsten von ember-cli-basierten Builds aufgegeben haben. @eviltrout hat bereits mit der Untersuchung dieser Umstellung begonnen.

Vielen Dank für den frühen Hinweis. Jegliche Hinweise in diese Richtung wären sehr hilfreich. cc @angus