Tengo problemas para instalar la gema `eth` en un plugin en producción

Aquí está lo que hice. Inicié sesión en el servidor y entré en el contenedor de Docker.

  • crea una carpeta llamada gems

  • crea un subdirectorio 2.7.5 (versión de Ruby utilizada por Discourse en producción en tests-passed)

  • vuelve a la carpeta gems

  • Ejecuta comandos de esta manera

    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: estos son exactamente los mismos comandos que Discourse ejecuta (intenta ejecutar, pero falla) para instalar los gems.

  • Ahora comprime esta carpeta.

  • Sal del contenedor de Docker y copia el zip fuera del contenedor de Docker usando el comando docker cp.

  • Conéctate a tu servidor a través de FileZilla o VSCode y descarga el zip.

  • extráelo en la carpeta raíz de tu plugin. Así, tu carpeta de plugin ahora tendrá el directorio gems.

  • Ahora sube la carpeta gems con el plugin a GitHub.

Ahora, cuando hagas una reconstrucción en Discourse con este plugin, Discourse usará las dependencias que le proporcionaste y no intentará instalarlas. Esta es una solución temporal y deberá rehacerse una vez que Discourse actualice la versión de Ruby.

Pero aquí está la gran pregunta: ¿por qué los mismos comandos que funcionan cuando se ejecutan desde la terminal fallan cuando Discourse intenta ejecutarlos? Realmente valdría la pena investigarlo y espero que haya una solución simple.

3 Me gusta