Ich wollte das Problem mit der Upload-Migration schon seit Ewigkeiten lösen und habe es jetzt mit Hilfe eines KI-Chatbots endlich geschafft. Ich teile meine Notizen mit allen, die mitlesen! Jays Beitrag oben enthielt genau das Besondere, was ich zum Start brauchte – danke dafür.
Mein erster Ansatz funktionierte genau so, wie Jay vorhergesagt hatte. Wenn man eine Liste von URLs zu den Bildern der Website erstellt, von der man wegzieht, und diese in einen Beitrag auf der neuen Website einfügt, werden sie heruntergeladen. Dafür muss die Option Download remote images to local aktiviert sein.
Mein KI-Chatbot hat dafür ein Skript erstellt, das ich hier für zukünftige Mitreisende teile.
Zusammenfassung
Führe dies in der Rails-Konsole aus:
topic = Topic.find(=TOPIC_ID=)
posts = Post.where(topic_id: topic.id)
urls = []
posts.each do |p|
UploadReference.where(target: p).each do |ref|
urls << "=SOURCE_URL=#{ref.upload.url}"
end
end
puts urls.uniq.join("\n")
puts "\nTotal: #{urls.uniq.count} upload(s)"
Möchtest du stattdessen eine ganze Kategorie verschieben? Ersetze die ersten zwei Zeilen durch:
topic_ids = Topic.where(category_id: =TOPIC_ID=).pluck(:id) posts = Post.where(topic_id: topic_ids)In diesem Fall ist =TOPIC_ID= deine Kategorie-ID, die am Ende ihrer URL unter Admin → Kategorien zu finden ist.
Für mich reichte das jedoch nicht aus, da ich auch PDFs habe, die nicht automatisch lokal heruntergeladen werden.
Also habe ich meinen Chatbot ein Python-Skript schreiben lassen, um die Uploads zu migrieren. Es funktioniert ziemlich gut, daher teile ich es gerne auch. Wenn du es ausprobieren möchtest oder Feedback hast, hier ist das Repo.
Außerdem habe ich meinen Chatbot einen vollständigeren Runbook zum Verschieben von Themen oder Kategorien schreiben lassen, der auf meinem Discourse verfügbar ist.