Ich verwende die Migrationsskripte, um ein Vanilla 3 Forum nach selbst gehostetem Discourse zu migrieren.
Das Migrationsskript funktioniert einwandfrei:
RAILS_ENV=production ruby script/import_scripts/vanilla.rb /shared/uploads/export.text
Das einzige Problem ist, dass ich nach dem Export die Daten nicht erneut importieren kann. Das Importskript läuft beim zweiten Mal einwandfrei, aber alle Datenänderungen, die ich an der Importdatei vorgenommen habe, werden nicht übernommen. Außerdem läuft der Importer beim zweiten Mal etwa 50x schneller, was mich vermuten lässt, dass er tatsächlich nichts importiert.
Frage: Gibt es eine Möglichkeit, die Importskripte unter
/var/www/discourse/script/import_scripts/
nach dem ersten Durchlauf erneut auszuführen?
Insbesondere möchte ich, während ich Fehler in meinem Importdateiformat behebe, die Möglichkeit haben, erneut zu importieren, um nur Aktualisierungen an Beiträgen und Diskussionen vorzunehmen.
Bisher war die einzige Lösung, die ich gefunden habe, die gesamte Discourse-Installation zu löschen und von vorne zu beginnen, was jedes Mal fast eine Stunde dauert.
Irgendwelche Tipps?
Hier ist der relevante Code aus vanilla.rb:
def import_posts
puts "", "importing posts..."
create_posts(@comments) do |comment|
next unless t = topic_lookup_from_imported_post_id("discussion#" + comment[:discussion_id])
{
id: "comment#" + comment[:comment_id],
user_id:
user_id_from_imported_user_id(comment[:insert_user_id]) || Discourse::SYSTEM_USER_ID,
topic_id: t[:topic_id],
raw: clean_up(comment[:body]),
created_at: parse_date(comment[:date_inserted]),
}
end
end
Ich bin Programmierer, aber kein Ruby-Programmierer - gibt es eine Möglichkeit, diesen Code zu ändern, um den Inhalt eines Beitrags zu ersetzen, wenn ich einen erneuten Import durchführe?