Rake-Posts: rebake_incremental (Feature-Anfrage)

Liebe Discourse-Entwickler,

Betreff: rake posts:rebake (zukünftiges Feature)

rake posts:rebake                                                      # Aktualisiert jeden Beitrag mit dem neuesten Markdown
rake posts:rebake_match[pattern,type,delay]                            # Neubearbeitet alle Beiträge, die dem String/Regex entsprechen, und verzögert optional die Schleife

A. Es wäre großartig, eine Funktion für die Neubearbeitung zu haben, die es dem Benutzer ermöglicht, nur dann neu zu bearbeiten, wenn die Themen-ID (oder Beitrags-ID) größer als eine bestimmte ganze Zahl ist.

rake posts:rebake_incremental['topic_id', 34567]      # Neubearbeitung, wenn topic_id >= 34567
rake posts:rebake_incremental['post_id', 364123]      # Neubearbeitung, wenn post_id >= 364123

Gründe:

(1) Beim Neubearbeiten, insbesondere bei Migrationsaufgaben, haben Entwickler Themen/Beiträge möglicherweise bereits migriert. Wenn sie später die Migration mit neuen Beiträgen aktualisieren (z. B. in einem aktiven Forum, wenn die Migration aktualisiert wird), gibt es keine Möglichkeit (soweit mir bekannt), den Startpunkt beim Neubearbeiten anzugeben. Das Muster-Matching ist dafür nicht ausgelegt (sofern ich mich nicht irre).

(2) Bei der Feinabstimmung von Texten aus alten Foren für Discourse im Rahmen von Migrationsaufgaben, z. B. die Anpassung spezieller Zeichen aus alten Foren, damit sie mit Markdown in einem Programmierforum funktionieren, oder die Feinabstimmung rekursiver BBCode-Zeichenketten in Legacy-Foren, ist es sinnvoll, beispielsweise die letzten 1000 Beiträge neu zu bearbeiten (anstatt die gesamte Datenbank).

B. Noch flexibler als A (Angeben eines Vergleichsoperators)

rake posts:rebake_incremental['topic_id', '>=',34567]      # Neubearbeitung, wenn topic_id >= 34567
rake posts:rebake_incremental['post_id','<' , 364123]      # Neubearbeitung, wenn post_id < 364123

Allgemein:

rake posts:rebake_incremental[target, operator, id]  

Wobei:

  • target entweder die topic_id oder die post_id ist
  • operator ein arithmetischer Vergleichsoperator ist
  • id eine ganze Zahl ist, entweder topic_id oder post_id

Hinweis: Migrationsaufgaben erfordern oft viele Iterationen, um sie richtig zu gestalten; insbesondere bei Text und Kodierung von Beiträgen aus dem ursprünglichen Forum für Discourse. Es gibt viele Zeichen, die in nicht auf Markdown basierenden Foren verwendet werden können, die bei der Migration zu einem mit Markdown verarbeiteten Forum Probleme verursachen. Eine bessere Kontrolle über den Neubearbeitungsprozess, wie oben dargestellt, würde helfen.

3 „Gefällt mir“

Es gibt außerdem eine weitere Rake-Aufgabe zum Nachbacken:

rake posts:rebake_uncooked_posts

Sie können alles, was Sie angefordert haben, und noch mehr erreichen, indem Sie den folgenden Befehl in der Rails-Konsole ausführen, bevor Sie die oben genannte Rake-Aufgabe starten.

DB.exec(<<~SQL)
  UPDATE posts
  SET baked_version = NULL
  WHERE topic_id >= 34567
SQL

Passen Sie einfach die Bedingung an Ihren speziellen Anwendungsfall an. Meiner Meinung nach ist das viel flexibler als eine Rake-Aufgabe.

13 „Gefällt mir“

Perfekt!!!

Danke @gerhard!!

Stimme zu 1000% zu.

Ich liebe diesen Rake-Task und diese Methode. Das ist großartig!

Nochmals vielen Dank!!


Hinweis: Eines der großartigen Dinge an dieser von @gerhard vorgeschlagenen Methode ist, dass wir die letzten 1000 Beiträge (zum Beispiel) vorverarbeiten können und, falls uns die Ergebnisse gefallen, dann den Rest der 999.000 Beiträge verarbeiten können. Das ist wirklich eine großartige Funktion.

Nochmals vielen Dank


5 „Gefällt mir“