Hier ist, was ich getan habe. Ich habe mich auf dem Server angemeldet und den Docker-Container betreten.
-
Erstellen Sie einen Ordner namens
gems -
Erstellen Sie ein Unterverzeichnis
2.7.5(Ruby-Version, die von der Produktions-Discourse auftests-passedverwendet wird) -
Wechseln Sie zurück in den Ordner
gems -
Führen Sie Befehle auf diese Weise aus
RUBY_VERSION=2.7.5 gem install pkg-config -v 1.4.7 -i $RUBY_VERSION --no-document --ignore-dependencies --no-user-install gem install mkmfmf -v 0.4 -i $RUBY_VERSION --no-document --ignore-dependencies --no-user-install ...Hinweis: Dies sind exakt dieselben Befehle, die Discourse ausführt (versucht auszuführen, aber fehlschlägt), um die Gems zu installieren.
-
Komprimieren Sie nun diesen Ordner.
-
Verlassen Sie den Docker-Container und kopieren Sie die Zip-Datei mit dem Befehl
docker cpaus dem Docker-Container heraus. -
Verbinden Sie sich über Filezilla oder VS Code mit Ihrem Server und laden Sie die Zip-Datei herunter.
-
Extrahieren Sie sie in den Stammordner Ihres Plugins. Ihr Plugin-Ordner enthält dann das Verzeichnis
gems. -
Pushen Sie nun den Ordner
gemsmit dem Plugin nach GitHub.
Wenn Sie nun eine Neuerstellung auf Discourse mit diesem Plugin durchführen, verwendet Discourse die von Ihnen bereitgestellten Abhängigkeiten und versucht nicht, diese zu installieren. Dies ist eine temporäre Problemumgehung und muss neu durchgeführt werden, sobald Discourse die Ruby-Version aktualisiert.
Aber hier ist die große Frage: Warum schlagen dieselben Befehle, die bei der Ausführung im Terminal funktionieren, fehl, wenn Discourse versucht, sie auszuführen? Es wäre wirklich lohnenswert, dies zu untersuchen, und ich hoffe, es gibt eine einfache Lösung.