He creado una encuesta en mi foro así:
[poll name=freestyle type=multiple results=always min=1 max=14 public=true chartType=bar]
* **#1** 
* **#2** 
[/poll]
Migré de un CDN a no usar CDN, y las URLs cambiaron de cdn.unicyclist.com a unicyclist.com.
Sin embargo, las URLs de las imágenes aquí siguen rotas, a pesar de aparecer correctamente en la vista previa del mensaje:
Rehacer la vista previa de los mensajes y ejecutar rake 'posts:remap[cdn.unicyclist.com,unicyclist.com]' no lo solucionó.
ask.discourse.org aconseja:
Lo que probablemente esté ocurriendo
Las opciones de tu encuesta no solo están en el texto crudo del mensaje. En el esquema de tu sitio, las encuestas también almacenan el HTML renderizado de las opciones en:
pollspoll_options.htmlPor lo tanto, la vista previa del mensaje puede parecer correcta, pero el renderizador de la encuesta puede seguir utilizando HTML obsoleto con el nombre de host antiguo del CDN.
Documentación relacionada:
- Crear y gestionar encuestas
- Eliminar DISCOURSE_CDN_URL
- Desactivar el CDN hace que las imágenes antiguas con URL de CDN no se muestren
- Reemplazar una cadena en todos los mensajes
Advertencia importante
Haz una copia de seguridad completa primero.
Además, evita “simplemente editar” la encuesta si ya tiene votos, porque las ediciones de encuestas normalmente borran los votos:
Enfoque más seguro: inspecciona primero una encuesta rota
Dentro del contenedor:
cd /var/discourse ./launcher enter app rails cLuego encuentra la encuesta correspondiente a ese mensaje:
poll = Poll.find_by(post_id: POST_ID, name: "freestyle") PollOption.where(poll_id: poll.id).pluck(:id, :html)Si ves
cdn.unicyclist.comen ese HTML, eso lo confirma.Soluciona esa encuesta específica
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) endLuego rehaz la vista previa de ese mensaje también:
Post.find(POST_ID).rebake!Si funciona, corrige en bloque todas las opciones de las encuestas
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 qué
posts:remapno ayudóPorque esa tarea rake es para el contenido de los mensajes, mientras que tus referencias de imágenes rotas probablemente están almacenadas en la caché del HTML de las opciones de la encuesta:
Recomendación
- Prueba con una encuesta rota
- Confirma que las imágenes carguen
- Solo entonces ejecuta la corrección en bloque
Si quieres, puedo escribirte un script para copiar y pegar donde solo tengas que reemplazar
POST_IDy ejecutarlo de forma segura en una sola encuesta primero.
¿Te parece bien? Obviamente haré una copia de seguridad primero, pero prefiero evitar tener que restaurar mi foro.
Necesito conservar todos los resultados de las encuestas ![]()
Pregunta adicional: ¿Debería Discourse manejar estos casos de forma nativa?
