Habe Schwierigkeiten bei der Installation des `eth`-Gems in einem Plugin in der Produktion

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 auf tests-passed verwendet 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 cp aus 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 gems mit 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.

3 „Gefällt mir“