Aqui está o que fiz. Fiz login no servidor e entrei no contêiner docker.
-
crie uma pasta chamada
gems -
crie um subdiretório
2.7.5(versão ruby usada pelo discourse de produção emtests-passed) -
volte para a pasta
gems -
Execute os comandos desta forma
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 ...Nota: estes são exatamente os mesmos comandos que o discourse executa (tenta executar, mas falha) para instalar os gems.
-
Agora comprima esta pasta.
-
Saia do contêiner docker e copie o zip para fora do contêiner docker usando o comando
docker cp. -
Conecte-se ao seu servidor via filezilla ou vscode e baixe o zip.
-
Extraia-o para a pasta raiz do seu plugin. Assim, sua pasta de plugin agora terá o diretório gems.
-
Agora envie a pasta gems com o plugin para o github.
Agora, quando você fizer um rebuild no discourse com este plugin, o discourse usará as dependências que você forneceu e não tentará instalá-las. Esta é uma solução temporária e precisará ser refeita assim que o discourse atualizar a versão do ruby.
Mas aqui está a grande questão: por que os mesmos comandos que funcionam ao serem executados pelo terminal falham quando o discourse tenta executá-los? Vale muito a pena investigar e espero que haja uma solução simples.