No puedo actualizar Ruby, por lo que ./launcher rebuild app sigue fallando

Hola,

Recientemente he migrado una imagen de servidor que tiene Discourse instalado con Docker.

Puedo poner todo en marcha, pero necesito volver a emitir el certificado SSL.

Dado que el servidor antiguo tenía SSL configurado, estoy siguiendo la sugerencia de esta guía y ejecutando
./launcher rebuild app

Esto hace que Docker descargue y actualice un montón de cosas. La imagen actual es Discourse 2.6.0.beta3 - https://github.com/discourse/discourse version 29f7e0689f61c5d85960a88f741ac3abced12d3e

La primera vez que lo ejecuté, me dio el mensaje de Actualización de Postgres, así que volví a ejecutar ./launcher rebuild app como se indica.

Ahora simplemente sigue fallando cada vez, creo que debido a este error con una versión insuficiente de Ruby instalada.

ERROR:  Error installing bundler:
	bundler-2.5.3 requires Ruby version >= 3.0.0. The current ruby version is 2.7.2.137.

Aquí está la salida completa

FAILED

--------------------

Pups::ExecError: cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock) failed with return #<Process::Status: pid 304 exit 1>

Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec failed with the params {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,\\\"\\\"); print $0 }' Gemfile.lock)", "find $home ! -user discourse -exec chown discourse {} \\+"]}

2ad07f29ace1b5396d9944fc4fc5a1ec712727280e8bb3df760367d08bfe6a25

** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

¿No pensaba que Docker actualizaría la versión de Ruby según fuera necesario?

He intentado iniciar sesión manualmente en el contenedor e instalar RVM, y activar Ruby v3+ pero sigo recibiendo el mismo error.

Estoy un poco perdido en esta etapa, y me pregunto si la versión instalada es simplemente demasiado antigua para ser actualizada con ./launcher.

¡Cualquier consejo sería muy apreciado!

Solo una nota, ese no es el error, los errores reales estarán más arriba.

2 Me gusta

Recomiendo empezar con una nueva imagen y hacer una instalación estándar.

1 me gusta

Gracias Jay, temía que esa pudiera ser la única forma de avanzar

Supongo que solo necesito encontrar una manera y esperar poder copiar la base de datos para que no se pierda nada.

Intenta actualizar todos tus paquetes usando apt upgrade

No es difícil. Puedes hacer una copia de seguridad o usar Mover un sitio de Discourse a otro VPS con rsync. No tienes nada que perder, ya que tu sitio existente permanece intacto. Es la forma más segura posible de avanzar.

1 me gusta

He actualizado absolutamente todo lo que he podido, incluida la versión de Ubuntu del servidor y he confirmado que tengo ruby v3.1 en ejecución.

El problema es que sospecho que es la versión de ruby necesaria en el contenedor, que está controlada por docker, y no parece que pueda actualizarla.

Logré instalar una versión limpia y ponerla en funcionamiento 3.3.0.beta3-dev

Sin embargo, cuando restauré la copia de seguridad del sitio anterior, no parece que se haya restaurado correctamente y ahora la página de inicio de sesión no funciona. Al mirar la consola de JS, hay un error Discourse is not defined cada vez que hago clic en los botones de inicio de sesión/registro. Supongo que debido a la gran diferencia de versiones, no es una simple recuperación de una copia de seguridad de 2.6.0 a una instalación limpia de 3.3.0.

Mover todo a un nuevo servidor simplemente no me funciona, ya que no puedo ejecutar ./launcher rebuild app sin que este error de ruby me bloquee cada vez.

Si estás ejecutando una actualización tan grande, es muy probable que tus temas estén rotos. Intenta el modo seguro.

3 Me gusta

Técnicamente aún no existe la 3.3.0, todavía estamos en las betas.

1 me gusta

Gracias por la información, desafortunadamente cuando intento acceder a /safe-mode simplemente me redirige de nuevo a la URL /login.

Creo que intentaré reinstalar y empezar de nuevo.

Usé la imagen oficial de Discourse, pero supongo que eso solo instala la última versión, independientemente de si es una beta. ¿O hay alguna forma de especificar una versión estable o específica?

Sí, puedes. Edita app.yml en una instalación nueva antes de compilar discourse (ya que no puedes degradar). Elige la etiqueta de GitHub. Tuve que hacer esto hace algún tiempo cuando tuve que restaurar a una versión antigua antes de actualizar a la última.

Ahora hago una imagen de la versión que funciona antes de actualizar, por si algo sale mal.

¡Gracias, aprecio la ayuda!

La buena noticia es que logré averiguar cómo instalar una versión anterior de discourse_docker y la misma versión de discourse cambiando el archivo app.yml.

La mala noticia es que me he encontrado con otro error cerca del final de la instalación.

--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' falló con el retorno #<Process::Status: pid 14351 exit 1>
Ubicación del fallo: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec falló con los parámetros {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}

Tendré que investigar un poco más, parece ser más relacionado con ruby/rails dentro del contenedor.

Prueba https://forum.example.com/login?safe_mode=no_themes%2Cno_plugins

2 Me gusta