Problema al subir avatar (Ubuntu)

Esto se dividió del hilo de configuración del entorno de desarrollo de WSL en Windows 11.

Mis problemas están relacionados con una configuración de desarrollo (sin Docker) instalada en Ubuntu 22.04.3

…Gracias por esto, aunque tuve que realizar algunos pasos manuales adicionales ya que el instalador editado no parecía instalar las últimas versiones de npm o ruby.

También usando ubuntu-22.04

Instalar la última versión de npm usando (opción 2): https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-22-04

Instalar pnmp: npm install -g pnpm

Instalar la última versión de ruby (método 3): https://ubuntuhandbook.org/index.php/2024/01/install-ruby-ubuntu-24-04/

Añadir esto a bash.rc:

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

Instalar imagemagik manualmente, la última versión (asegúrese de ir a la sección “Install latest version of ImageMagick from the source code (for advanced and desperate users)”): https://itsfoss.com/install-imagemagick-ubuntu

Solo después de todo esto pude iniciar sesión en la instancia….

Después de pasar todo el día configurando la instancia de desarrollo, estaba bastante satisfecho… todo parece estar bien, excepto al subir avatares. Específicamente, como usuario puedo subir un avatar y se muestra correctamente en el cuadro de carga de avatar, pero cuando hago clic en guardar, solo muestra el avatar de marcador de posición… sin errores en el registro…

Esto es bastante importante para mí, ya que configuré la instancia de desarrollo para probar una migración y una de esas pruebas es que obtenga los avatares :smiley:… así que quiero asegurarme de que funcionen antes de continuar con una importación de prueba.

Las imágenes subidas en los temas aparecen correctamente, sin problemas.

¿Alguien tiene alguna idea? Cualquier ayuda es muy apreciada.

Las URL de las imágenes pueden ser un poco complicadas en local.

Asegúrate de iniciar tu servidor local con FORCE_HOSTNAME=localhost:4200 bin/ember-cli -u

Es mejor usar una instancia de prueba en la nube para imitar tu destino final… de hecho, te recomendaría probar las migraciones en la nube al final.

1 me gusta

Lo intenté, sin suerte.

Estoy tan cansado después de pasar todo el día haciendo que este entorno de desarrollo local llegara a donde está, que no puedo convencerme de que todo haya sido inútil ahora :stuck_out_tongue: ¡pensé que ya estaba listo!

Mi proceso de pensamiento para un entorno de desarrollo local fue:

ejecutar el script de importación localmente, hacer una copia de seguridad de Discord, ponerlo en la instancia de producción en la nube adecuada cuando todo se vea bien…

puede comprobar las URL de los avatares en las herramientas de desarrollador del navegador y es posible que descubra que no son correctas

las instalaciones locales son muy útiles para el desarrollo y las pruebas… simplemente no son perfectas para manipular imágenes

1 me gusta

Lo que probablemente está sucediendo es que WSL no está exponiendo 127.0.0.1 a Windows, por lo que un navegador de Windows no lo está detectando.

¿En su lugar, intenta iniciar desde Chrome dentro de WSL2 y usar eso?

Mi suposición es que los avatares se están mostrando con una dirección 127.0.0.1…

Ahh, lo siento, estoy usando Ubuntu, en una máquina virtual de Ubuntu. No pretendía secuestrar este hilo de Win 11.

1 me gusta

Aquí está el comportamiento exacto.

Las cargas de imágenes en las publicaciones funcionan bien.

Cambiar el avatar de usuario parece funcionar cuando subes la imagen por primera vez y aún estás en el diálogo de elegir imagen:

pero cuando haces ‘Guardar cambios’, la imagen subida no se muestra y aparece la predeterminada:

La imagen se subió y se puede ver yendo a la fuente:

y si cambias la URL en las herramientas de desarrollador, se muestra bien en la página de preferencias:

Así que… la diferencia es la URL: el avatar personalizado subido tiene una “http://127.0.0.1:4200/uploads/default/original…..” pero la página quiere mostrar

“/user_avatar/127.0.0.1/user1/…….”

… ¿qué me estoy perdiendo aquí?

nota: en temas/publicaciones la imagen se muestra correctamente con la URL: http://localhost:4200/uploads/default/original/……….etc

¡Cualquier ayuda es apreciada!

Ok, creo que estoy llegando al fondo del asunto, dos problemas, informaré cuando funcione

Ok…

Primer problema: la ruta del avatar era la dirección IP 127.0.0.1, mientras que todas las demás URL eran localhost. ¿Podría eso marcar alguna diferencia? La cambié de todos modos, yendo a rails c (ya que no parecía captar los parámetros desde la línea de comandos para iniciar Discourse (FORCE_HOST=localhost etc.), estaban en blanco en rails).

rails c
SiteSetting.force_hostname = "localhost"
SiteSetting.port = 4200
exit

Luego, las rutas de los avatares eran localhost y no la dirección IP después de reiniciar el sitio. Sin embargo, los avatares seguían sin funcionar.

Una investigación más profunda de los registros justo después de hacer una importación de avatares:

tail -n 200 log/development.log

reveló:

convert: no decode delegate for this image format jpeg:/home/bob/discourse/public/uploads/default/original/1X/92bb0d46e6a4b8a1333505b9d2da59a5ed1721ec.jpeg[0]' @ error/constitute.c/ReadImage/752.\nconvert: no images defined jpeg:/tmp/discourse-thumbnail20260202-4096-qjyo93.jpeg' @ error/deprecate.c/ConvertImageCommand/3368.\n"

y después de investigar un poco, descubrí que se debía a que había instalado ImageMagick pero no los delegados de jpeg PRIMERO. Desinstalé ImageMagick, instalé los delegados de jpeg (y otros):

sudo apt install -y libpng-dev libtiff-dev libwebp-dev libheif-dev liblcms2-dev zlib1g-dev libjpeg-turbo8 libjpeg-turbo8-dev

y luego reinstalé ImageMagick desde la fuente:

./configure \
  --prefix=/usr/local \
  --with-modules \
  --disable-static \
  --with-quantum-depth=16 \
  --with-jpeg=yes \
  --with-png=yes \
  --with-tiff=yes \
  --with-webp=yes \
  --with-heic=yes \
  --with-lcms=yes

make -j"$(nproc)"
sudo make install
sudo ldconfig

Reinicié el servidor de Discourse y los avatares funcionaron al instante :slight_smile:

Estoy molesto conmigo mismo por haberme fijado en las referencias de URL ip/localhost en lugar de comprobar lo básico… pero bueno, aprendí bastante en los últimos dos días y ahora funciona :slight_smile: