Recentemente, configurei minhas instalações do Discourse para usar um CDN e armazenar uploads e ativos do site em um serviço compatível com S3. Até agora, tudo mais funcionou, mas nossas imagens de emojis personalizados não estão carregando.
Portanto, minha conclusão é que pode haver um bug no tratamento de emojis personalizados ao gerar os links de imagem, que ignora o uso do CDN configurado para ficar na frente dos arquivos armazenados no S3.
Tentei encontrar tópicos relevantes, mas só encontrei este: Custom Emoji does not use Amazon S3, que parece estar desatualizado, já que o Discourse está tentando usar o S3 para servir emojis personalizados no meu site.
Portanto, os emojis padrão usam um CDN, enquanto os personalizados usam outro, mas ambos são cobertos pelo CDN se você fizer uma configuração adequada seguindo Usando Armazenamento de Objetos para Uploads (Clones S3) à risca.
Não é um bug, este é o comportamento esperado, pois os emojis padrão estão armazenados dentro do código do aplicativo e os personalizados são apenas um upload normal do site.
Tive um problema semelhante (posts contendo emojis personalizados não eram marcados para rebake durante a migração para o S3 se não houvesse outros uploads no post bruto e, portanto, o link cozido não apontava para a CDN).
Corrigi isso excluindo e reenviando apenas um dos emojis personalizados, o que acionou automaticamente uma tarefa que reconstroiu todos os posts com emojis personalizados (mas tenho certeza de que também existe uma tarefa rake que pode ser usada para rebake diretamente posts com emojis personalizados).
Vejo o problema em admin/customize/emojis, bem como na pré-visualização do editor de postagens. Além disso, as reações de retórica em postagens feitas na última hora estão falhando.
Portanto, isso não afeta apenas postagens antigas que usam emojis, mas também postagens novas e partes da interface (o seletor de reações de retórica também usa a URL errada, assim como a área de gerenciamento de emojis do administrador).
Então é isso mesmo. Se eu realmente publicar, o emoji é exibido corretamente.
Se a correção para o plugin Retort for semelhante à forma como a área administrativa seria corrigida, talvez eu possa tentar corrigir o plugin, já que os emojis de reação personalizados são bastante utilizados na minha instância do Discourse.
Tentei corrigir isso sozinho após uma rápida olhada.
Parece que o problema é que o método JavaScript do Discourse buildEmojiUrl recebe a URL de armazenamento em vez da URL da CDN para o emoji personalizado. O que parece ser a mesma coisa que o plugin retort também usa.
Então, ao corrigir isso, provavelmente resolveria todos os problemas, certo?
Depois dessa rápida olhada, encontrei um local que parece construir as URLs para os emojis personalizados e mudei isso para:
Testei com o rails console e isso parece corrigir as URLs no meu site de produção. Então, tentei implantar essa alteração lá, mas não funcionou.
Depois de não funcionar, também tentei mudar o EMOJI_VERSION para 10 para tentar forçar alguma atualização, mas isso também não funcionou. Quando faço launcher enter e git log, vejo meu commit lá. Segui a abordagem aqui: