Problema caricamento Avatar (Ubuntu)

Questo è stato separato dalla discussione sull’impostazione dell’ambiente di sviluppo WSL su Windows 11.

I miei problemi riguardano un’installazione di sviluppo (non-docker) su ubuntu 22.04.3

…Grazie per questo, ho dovuto eseguire alcuni passaggi manuali aggiuntivi poiché l’installer modificato non sembrava installare le ultime versioni di npm o ruby

Utilizzo anche ubuntu-22.04

Installa l’ultima versione di npm usando (opzione 2): https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-22-04

Installa pnpm: npm install -g pnpm

Installa l’ultima versione di ruby (metodo 3): https://ubuntuhandbook.org/index.php/2024/01/install-ruby-ubuntu-24-04/

Aggiungi questo a bash.rc:

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

Installa imagemagick manualmente, l’ultima versione (assicurati di andare alla sezione “Install latest version of ImageMagick from the source code (for advanced and desperate users)”: https://itsfoss.com/install-imagemagick-ubuntu

Solo dopo tutto questo sono stato in grado di accedere all’istanza…

Dopo aver passato l’intera giornata a configurare l’istanza di sviluppo, ero piuttosto soddisfatto… tutto sembra a posto, tranne il caricamento degli avatar. Nello specifico, come utente posso caricare un avatar e nella casella di caricamento avatar viene visualizzato correttamente, ma quando clicco su salva viene visualizzato solo l’avatar segnaposto… nessun errore nel log…

Questo è piuttosto importante per me poiché ho configurato l’istanza di sviluppo per testare una migrazione e uno di quei test prevede che vengano importati gli avatar :smiley:… quindi voglio assicurarmi che funzionino prima di procedere con un’importazione di prova.

Le immagini caricate negli argomenti appaiono correttamente, nessun problema.

Qualcuno ha qualche idea? Qualsiasi aiuto è molto apprezzato.

Gli URL per le immagini possono essere un po’ complicati in locale.

Assicurati di avviare il tuo server locale con FORCE_HOSTNAME=localhost:4200 bin/ember-cli -u

È meglio usare un’istanza di test nel cloud per simulare la tua destinazione finale… infatti, ti consiglio di testare le migrazioni nel cloud in definitiva.

1 Mi Piace

Ci ho provato, senza successo.

Sono così stanco dopo aver passato l’intera giornata a portare questo ambiente di sviluppo locale dove si trova, non riesco a convincermi che sia stato tutto inutile ora :stuck_out_tongue: pensavo di esserci quasi!

Il mio processo mentale per un ambiente di sviluppo locale era:

eseguire lo script di importazione localmente, eseguire il backup di Discord, metterlo sull’istanza di produzione cloud appropriata quando tutto sembra a posto…

puoi controllare gli URL degli avatar negli strumenti di sviluppo del browser e potresti scoprire che non sono corretti

le installazioni locali sono molto utili per lo sviluppo e i test… solo che non sono perfette per manipolare le immagini

1 Mi Piace

Quello che probabilmente sta succedendo è che WSL non sta esponendo 127.0.0.1 a Windows, quindi un browser Windows non lo sta rilevando.

Prova invece a lanciare da Chrome all’interno di WSL2 e usarlo?

La mia ipotesi è che gli avatar vengano visualizzati con un indirizzo 127.0.0.1…

Ahh scusate, sto usando Ubuntu, su una VM Ubuntu. Non intendevo dirottare questa discussione su Win 11

1 Mi Piace

Ecco il comportamento esatto.

Il caricamento di immagini nei post funziona correttamente.

La modifica dell’avatar utente sembra funzionare quando si carica l’immagine per la prima volta e si è ancora nella finestra di dialogo di selezione dell’immagine:

ma quando si fa clic su “Salva modifiche”, l’immagine caricata non viene visualizzata e viene mostrata quella predefinita:

L’immagine è stata caricata ed è possibile visualizzarla andando alla sorgente:

e se si modifica l’URL negli strumenti per sviluppatori, viene visualizzata correttamente nella pagina delle preferenze:

Quindi… la differenza è l’URL: l’avatar personalizzato caricato ha un “http://127.0.0.1:4200/uploads/default/original…” ma la pagina vuole visualizzare

“/user_avatar/127.0.0.1/user1/…”

… cosa mi sto perdendo?

nota: nei topic/post l’immagine viene visualizzata correttamente con l’URL: http://localhost:4200/uploads/default/original/……….ecc

Qualsiasi aiuto è apprezzato!

Ok, penso di starci arrivando, due problemi, riferirò quando funzionerà

Ok…

Primo problema: il percorso dell’avatar era l’indirizzo IP 127.0.0.1 mentre tutti gli altri URL erano localhost, questo potrebbe fare la differenza? L’ho comunque modificato, andando in rails c (dato che non sembrava acquisire i parametri dalla riga di comando per avviare Discourse (FORCE_HOST=localhost ecc.), erano vuoti in rails).

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

Quindi i percorsi degli avatar erano localhost e non indirizzo IP dopo aver riavviato il sito. Tuttavia, gli avatar non funzionavano ancora.

Ulteriori indagini sui log non appena ho eseguito un’importazione di avatar:

tail -n 200 log/development.log

hanno rivelato:

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"

e dopo qualche ricerca ho scoperto che era perché avevo installato Imagemagick ma non prima i delegati jpeg. Ho disinstallato Imagemagick, installato i delegati jpeg (e altri):

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

e poi ho reinstallato Imagemagick da sorgente:

./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

ho riavviato il server di Discourse e gli avatar hanno funzionato all’istante :slight_smile:

Sono infastidito con me stesso per essermi fissato sui riferimenti URL ip/localhost invece di controllare le basi… ma eccoci qua, ho imparato parecchio negli ultimi due giorni e ora funziona :slight_smile: