Voici ce que j’ai fait. Je me suis connecté au serveur et suis entré dans le conteneur Docker.
-
Créez un dossier nommé
gems -
Créez un sous-répertoire
2.7.5(version Ruby utilisée par le Discourse de production surtests-passed) -
Revenez au dossier
gems -
Exécutez les commandes de cette manière
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 ...Remarque : ce sont exactement les mêmes commandes que Discourse exécute (tente d’exécuter, mais échoue) pour installer les gems.
-
Compressez maintenant ce dossier.
-
Quittez le conteneur Docker et copiez le fichier zip à l’extérieur du conteneur Docker à l’aide de la commande
docker cp. -
Connectez-vous à votre serveur via FileZilla ou VSCode et téléchargez le fichier zip.
-
Extrayez-le dans le dossier racine de votre plugin. Votre dossier de plugin contiendra donc maintenant le répertoire
gems. -
Poussez maintenant le dossier
gemsavec le plugin sur GitHub.
Maintenant, lorsque vous reconstruirez Discourse avec ce plugin, Discourse utilisera les dépendances que vous lui avez fournies et n’essaiera pas de les installer. Il s’agit d’une solution de contournement temporaire qui devra être refaite une fois que Discourse aura mis à jour la version Ruby.
Mais voici la grande question : pourquoi les mêmes commandes qui fonctionnent lorsqu’elles sont exécutées depuis le terminal échouent-elles lorsque Discourse essaie de les exécuter ? Cela vaut vraiment la peine d’y regarder et j’espère qu’il existe une solution simple.