Problema ao carregar avatar (Ubuntu)

Isto foi separado do tópico de configuração do ambiente de desenvolvimento do WSL no win 11.

Meus problemas estão relacionados a uma configuração de desenvolvimento (não-docker) instalada no ubuntu 22.04.3

…Obrigado por isso, tive que fazer algumas etapas manuais extras, pois o instalador editado não pareceu instalar as versões mais recentes do npm ou ruby

Também usando ubuntu-22.04

Instalar o npm mais recente usando (opção 2): https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-22-04

Instalar pnmp: npm install -g pnpm

Instalar o ruby mais recente (método 3): https://ubuntuhandbook.org/index.php/2024/01/install-ruby-ubuntu-24-04/

Adicionar isto ao bash.rc:

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

Instalar o imagemagik manualmente, a versão mais recente (certifique-se de ir para a seção “Install latest version of ImageMagick from the source code (for advanced and desperate users)”: https://itsfoss.com/install-imagemagick-ubuntu

Somente depois de tudo isso consegui fazer login na instância…

Depois de passar o dia inteiro configurando a instância de desenvolvimento, fiquei bem satisfeito… tudo parece estar ok, exceto o upload de avatares. Especificamente, como usuário, consigo fazer o upload de um avatar e ele é exibido corretamente na caixa de upload de avatar, mas quando clico em salvar, ele exibe apenas o avatar de espaço reservado… sem erros no log…

Isso é bem importante para mim, pois configurei a instância de desenvolvimento para testar uma migração e um desses testes é que ela carrega avatares :smiley: … então quero ter certeza de que eles funcionam antes de prosseguir com uma importação de teste.

Imagens carregadas em tópicos aparecem corretamente, sem problemas.

Alguém tem alguma ideia? Qualquer ajuda é muito apreciada.

URLs para imagens podem ser um pouco complicadas localmente.

Certifique-se de iniciar seu servidor local com FORCE_HOSTNAME=localhost:4200 bin/ember-cli -u

É melhor usar uma instância de teste na nuvem para imitar seu destino final… na verdade, eu recomendaria que você testasse as migrações na nuvem, em última análise.

Tentei isso, sem sucesso.

Estou tão cansado depois de passar o dia inteiro fazendo este ambiente de desenvolvimento local chegar onde está, que não consigo me convencer de que tudo foi inútil agora :stuck_out_tongue: achei que estava lá!

Meu processo de pensamento para um ambiente de desenvolvimento local foi:

executar o script de importação localmente, fazer backup do Discord, colocá-lo na instância de produção em nuvem apropriada quando tudo parecer bom…

você pode verificar as URLs dos avatares nas ferramentas de desenvolvedor do navegador e pode descobrir que elas não estão corretas

instalações locais são muito úteis para desenvolvimento e testes… apenas não são perfeitas para manipular imagens

O que provavelmente está acontecendo é que o WSL não está expondo o 127.0.0.1 para o Windows, então um navegador do Windows não o está detectando.

Em vez disso, tente iniciar a partir do Chrome dentro do WSL2 e usar esse?

Minha suposição é que os avatares estão sendo exibidos com um endereço 127.0.0.1…

Ahh desculpe, estou usando o Ubuntu, em uma VM Ubuntu. Não queria sequestrar este tópico do Win 11

Aqui está o comportamento exato.

O upload de imagens em publicações funciona bem.

Mudar o avatar do usuário parece funcionar quando você carrega a imagem pela primeira vez e ainda está na caixa de diálogo de seleção de imagem:

mas quando você clica em ‘Salvar alterações’, a imagem carregada não é exibida e mostra a imagem padrão:

A imagem foi carregada e pode ser visualizada acessando a fonte:

e se você alterar a URL nas ferramentas do desenvolvedor, ela é exibida corretamente na página de preferências:

Então… a diferença é a URL - o avatar personalizado carregado tem um “http://127.0.0.1:4200/uploads/default/original…” mas a página tenta exibir

“/user_avatar/127.0.0.1/user1/…”

…o que estou perdendo aqui?

nota: em tópicos/publicações a imagem é exibida corretamente com a URL: http://localhost:4200/uploads/default/original/……….etc

Qualquer ajuda é apreciada!

Ok, acho que estou chegando ao fundo da questão, dois problemas, reportarei quando estiver funcionando

Ok…

Primeiro problema - o caminho do avatar era o endereço IP 127.0.0.1, enquanto todos os outros URLs eram localhost - isso faria alguma diferença? Eu mudei de qualquer maneira, entrando no rails c (já que não parecia captar os parâmetros da linha de comando para iniciar o discourse (FORCE_HOST=localhost etc.), eles estavam em branco no rails).

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

Então os caminhos dos avatares eram localhost e não endereço IP depois que reiniciei o site. Os avatares ainda não estavam funcionando, no entanto.

Mais investigação dos logs assim que fiz uma importação de avatar:

tail -n 200 log/development.log

revelou:

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 depois de alguma pesquisa descobri que era porque eu tinha instalado o imagemagick, mas não os delegados jpeg PRIMEIRO. Desinstalei o Imagemagick, instalei os delegados jpeg (e outros):

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

e então reinstalei o Imagemagick a partir da fonte:

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

reiniciei o servidor discourse e os avatares funcionaram instantaneamente :slight_smile:

Estou irritado comigo mesmo por ter fixado nas referências de URL ip/localhost em vez de verificar o básico… mas é isso, aprendi bastante nos últimos dois dias e está funcionando agora :slight_smile: