Rake posts:rebake_incremental (solicitud de característica)

Estimados desarrolladores de Discourse,

RE: rake posts:rebake (funcionalidad futura)

rake posts:rebake                                                      # Actualiza cada publicación con el último formato markdown
rake posts:rebake_match[pattern,type,delay]                            # Re-procesa todas las publicaciones que coincidan con la cadena/expresión regular y opcionalmente retrasa el bucle

A. Sería excelente contar con una función de re-procesamiento que permita al usuario re-procesar solo si el ID del tema (o el ID de la publicación) es mayor que algún número entero.

rake posts:rebake_incremental['topic_id', 34567]      # Re-procesa si topic_id >= 34567
rake posts:rebake_incremental['post_id', 364123]      # Re-procesa si post_id >= 364123

Razones:

(1) Al re-procesar, especialmente al trabajar en tareas de migración, los desarrolladores pueden haber migrado ya temas/publicaciones; pero luego, cuando actualizan la migración con nuevas publicaciones (por ejemplo, en un foro activo, cuando se actualiza la migración), no hay forma (que yo sepa) de especificar el punto de partida en el proceso de formateo. La coincidencia de patrones no está diseñada para esto (a menos que esté malinterpretando).

(2) Al trabajar en el ajuste fino del texto de foros antiguos a Discourse en tareas de migración, por ejemplo, ajustando caracteres especiales de foros antiguos para que funcionen con Markdown en un foro de programación, o ajustando recursivamente el BBCode en foros heredados, es útil re-procesar, por ejemplo, las últimas 1000 publicaciones (en lugar de toda la base de datos).

B. Aún más flexible que A (especificar un operador de comparación)

rake posts:rebake_incremental['topic_id', '>=',34567]      # Re-procesa si topic_id >= 34567
rake posts:rebake_incremental['post_id','<' , 364123]      # Re-procesa si post_id < 364123

Genérico:

rake posts:rebake_incremental[target, operator, id]  

Donde:

  • target es ya sea topic_id o post_id
  • operator es un operador de comparación aritmético
  • id es un número entero, ya sea topic_id o post_id

Nota: Las tareas de migración a menudo requieren muchas iteraciones para hacerlo correctamente; especialmente el texto y la codificación de las publicaciones desde el foro original hasta Discourse. Hay muchos caracteres que se pueden usar en foros no basados en Markdown que, al migrarse a un foro procesado con Markdown, causan problemas. Tener más control sobre el proceso de re-procesamiento, como se ilustra, sería de gran ayuda.

3 Me gusta

También hay otra tarea de rake para volver a hornear:

rake posts:rebake_uncooked_posts

Podrías hacer todo lo que solicitaste e incluso más ejecutando el siguiente comando en la consola de Rails antes de ejecutar la tarea de rake mencionada anteriormente.

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

Simplemente ajusta la condición a tu caso de uso específico. En mi opinión, eso es mucho más flexible que una tarea de rake.

13 Me gusta

¡Perfecto!!!

¡Gracias, @gerhard!!

Estoy totalmente de acuerdo, 1000%.

Me encanta esta tarea de rake y este método. ¡Es genial!

¡Gracias de nuevo!!


Nota: Una de las grandes cosas de este método sugerido por @gerhard es que podemos hornear las últimas 1000 publicaciones (por ejemplo) y, si nos gustan los resultados, proceder a hornear el resto de las 999.000 publicaciones. Esta es realmente una característica preciosa.

Gracias de nuevo


5 Me gusta