Criei uma enquete no meu fórum assim:
[poll name=freestyle type=multiple results=always min=1 max=14 public=true chartType=bar]
* **#1** 
* **#2** 
[/poll]
Migrei de uma CDN para nenhum CDN, e os URLs foram alterados de cdn.unicyclist.com para unicyclist.com.
No entanto, os URLs das imagens aqui continuam quebrados, apesar de aparecerem na prévia da postagem:
Reprocessar as postagens e executar rake 'posts:remap[cdn.unicyclist.com,unicyclist.com]' não resolveu o problema.
O ask.discourse.org sugere:
O que provavelmente está acontecendo
As opções da sua enquete não estão apenas no raw da postagem. No esquema do seu site, as enquetes também armazenam o HTML renderizado das opções em:
pollspoll_options.htmlEntão a prévia da postagem pode parecer correta, mas o renderizador da enquete ainda pode estar usando HTML desatualizado com o antigo hostname da CDN.
Documentação relacionada:
- Criando e gerenciando enquetes
- Remover DISCOURSE_CDN_URL
- Desativar CDN causa imagens antigas com URL da CDN não serem exibidas
- Substituir uma string em todas as postagens
Aviso importante
Faça um backup completo primeiro.
Além disso, evite “apenas editar” a enquete se ela tiver votos, porque edições em enquetes normalmente limpam os votos:
Abordagem mais segura: inspecione uma enquete quebrada primeiro
No container:
cd /var/discourse ./launcher enter app rails cEntão encontre a enquete daquela postagem:
poll = Poll.find_by(post_id: POST_ID, name: "freestyle") PollOption.where(poll_id: poll.id).pluck(:id, :html)Se você vir
cdn.unicyclist.comnaquele HTML, isso confirma.Corrigir essa única enquete
poll = Poll.find_by(post_id: POST_ID, name: "freestyle") PollOption.where(poll_id: poll.id).find_each do |opt| new_html = opt.html.gsub("cdn.unicyclist.com", "unicyclist.com") opt.update_columns(html: new_html, updated_at: Time.zone.now) endDepois, reprocessar essa postagem também:
Post.find(POST_ID).rebake!Se funcionar, corrigir em massa todas as opções de enquete
PollOption.find_each do |opt| next unless opt.html&.include?("cdn.unicyclist.com") opt.update_columns( html: opt.html.gsub("cdn.unicyclist.com", "unicyclist.com"), updated_at: Time.zone.now ) endPor que
posts:remapnão ajudouPorque essa tarefa rake é para conteúdo de postagens, enquanto suas referências de imagens quebradas provavelmente estão no cache do HTML das opções da enquete em vez disso:
Recomendação
- testar em uma enquete quebrada
- confirmar se as imagens carregam
- apenas então executar a correção em massa
Se quiser, posso escrever um script para copiar e colar onde você só substitui
POST_IDe executa com segurança em uma única enquete primeiro.
Isso parece bom para você? Vou fazer um backup primeiro, obviamente, mas prefiro evitar ter que restaurar meu fórum.
Preciso manter todos os resultados das enquetes ![]()
Pergunta bônus: o Discourse deveria lidar nativamente com esses casos?
