Ich habe in meinem Forum eine Umfrage erstellt, die so aussieht:
[poll name=freestyle type=multiple results=always min=1 max=14 public=true chartType=bar]
* **#1** 
* **#2** 
[/poll]
Ich habe von einem CDN auf keinen CDN gewechselt, und die URLs wurden von cdn.unicyclist.com zu unicyclist.com geändert.
Allerdings bleiben die Bild-URLs hier defekt, obwohl sie in der Beitragsvorschau erscheinen:
Das Neubacken der Beiträge und das Ausführen von rake 'posts:remap[cdn.unicyclist.com,unicyclist.com]' hat das Problem nicht behoben.
ask.discourse.org rät:
Was wahrscheinlich passiert
Die Optionen deiner Umfrage befinden sich nicht nur im rohen Beitragstext. In deiner Schema-Datenbank speichern Umfragen auch den gerenderten HTML-Code der Optionen in:
pollspoll_options.htmlDaher kann die Beitragsvorschau korrekt aussehen, während der Umfrage-Renderer möglicherweise noch veralteten HTML-Code mit dem alten CDN-Hostnamen verwendet.
Verwandte Dokumentation:
- Erstellen und Verwalten von Umfragen
- Remove DISCOURSE_CDN_URL
- Deaktivieren des CDN führt dazu, dass alte Bilder mit CDN-URL nicht angezeigt werden können
- Ersetzen eines Strings in allen Beiträgen
Wichtige Warnung
Mache zuerst ein vollständiges Backup.
Außerdem vermeide es, die Umfrage einfach zu bearbeiten, wenn sie bereits Stimmen enthält, da Umfragebearbeitungen normalerweise die Stimmen zurücksetzen:
Sicherer Ansatz: Inspektiere zuerst eine defekte Umfrage
Im Container:
cd /var/discourse ./launcher enter app rails cFinde dann die Umfrage für diesen Beitrag:
poll = Poll.find_by(post_id: POST_ID, name: "freestyle") PollOption.where(poll_id: poll.id).pluck(:id, :html)Wenn du
cdn.unicyclist.comin diesem HTML siehst, bestätigt das die Vermutung.Behebe diese eine Umfrage
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) endBacke den Beitrag anschließend ebenfalls neu:
Post.find(POST_ID).rebake!Wenn es funktioniert, behebe alle Umfrageoptionen im Bulk
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 ) endWarum
posts:remapnicht geholfen hatWeil diese Rake-Task für Beitragsinhalte gedacht ist, während deine defekten Bildreferenzen wahrscheinlich im HTML-Cache der Umfrageoptionen gespeichert sind:
Empfehlung
- Teste es an einer defekten Umfrage
- Bestätige, dass die Bilder geladen werden
- Führe erst dann die Massenbehebung aus
Wenn du möchtest, kann ich dir ein Copy-Paste-Skript schreiben, bei dem du nur
POST_IDersetzen musst und es zuerst sicher an einer einzelnen Umfrage ausführst.Sieht das für dich gut aus? Ich mache natürlich vorher ein Backup, aber ich würde gerne vermeiden, mein Forum wiederherstellen zu müssen.
Ich muss alle Umfrageergebnisse behalten ![]()
Bonusfrage: Sollte Discourse solche Fälle nicht nativ behandeln?
