Ich versuche, einige defekte Bilder zu finden und zu ersetzen, die von unserer Forum-Migration zu Discourse übrig geblieben sind, und habe dabei großen Erfolg gehabt (ich liebe den remap-Befehl!). Aber er findet für diese Beispiele nichts zum Ersetzen, und ich kann keinen Fehler erkennen. Sie auch?
Ich muss dies in zwei Durchgängen erledigen, da ich den Inhalt des alt-Tags behalten und das img-Element neu darum herum aufbauen muss. Der erste remap-Versuch schlägt fehl:
Also FINDEN: <img src="https://londonbikers.com/images/transparent.png" alt="
und ERSETZEN durch: <img src="https://londonbikersarchive.blob.core.windows.net/forum-attachments/
Ich habe angenommen, dass doppelte Anführungszeichen mit einem Backslash escape werden müssen? Also habe ich diesen Befehl verwendet:
Oh, moment, einige dieser Bilder werden angezeigt. Ist das die Discourse-Anhangsfunktionalität? Läuft hier eine benutzerdefinierte Rendering-Logik, anstatt dass es sich um HTML-Strings in der Datenbank handelt?
Dieses hier wird jedoch nicht angezeigt. Ich könnte die Datei im Cloud-Blob-Speicher haben und möchte sie entweder in Discourse importieren oder einfach auf den Blob-Speicher verweisen:
raw ist das Feld, in dem der Text steht, den du im Editor siehst. Das, was du ersetzt, ist das, was du siehst, wenn du den Beitrag in der Benutzeroberfläche bearbeitest, oder? (cooked ist der verarbeitete Inhalt, der angezeigt wird.)
Ich führe Aktionen aus, um Beiträge neu zu schreiben. Das könnte gerade genug sein, um dich gefährlich zu machen:
bps = Post.where("raw like '%//SOME-STRING%'")
bps.each do |post|
post.raw.gsub!(/OLD/,'NEW')
post.save
end
Der Vorteil gegenüber der Rake-Aufgabe ist, dass du nicht mehrere Ebenen von Escaping durchlaufen musst.