He instalado Discourse con éxito utilizando el servicio en la nube de Digital Ocean con la idea de migrar algunas listas de correo de listserv si veo que Discourse puede hacer todo lo que necesitamos. Mientras probaba, he estado usando Thunderbird en Windows 10 para guardar los correos electrónicos nuevos que llegan de la lista de correo cada pocos días en una carpeta en Windows, que luego copio a la carpeta /var/discourse/shared/standalone/import/data/ExampleCategory1 (o ExampleCategory2) usando FileZilla. Luego inicio la importación de docker y ejecuto el import_mbox.sh. Hasta ahora todo ha funcionado bien y puedo hacer que Discourse replique manualmente lo que ha llegado a través de las listas de correo en las que estoy.
Sin embargo, imagina que tengo ExampleCategory1 y ExampleCategory2 como categorías y pongo los correos electrónicos destinados a la primera carpeta, ExampleCategory1, en la segunda, ExampleCategory2, por error, y luego ejecuto la importación antes de darme cuenta. (¡La función de arrastrar y soltar falló en FileZilla!)
Ahora tengo los correos electrónicos de una lista de correo en la categoría de otra, por error.
Para solucionarlo, eliminé todos los temas/publicaciones en ExampleCategory2 usando la interfaz web, y también usando el comando rake destroy:topics[“ExampleCategory2”] después para asegurarme, con el plan de volver a ejecutar el import_mbox.sh (tengo copias de todos los correos electrónicos que deberían estar en cada categoría). Sin embargo, ¡Discourse parece recordar qué correos electrónicos ha importado, incluso a pesar de que las publicaciones han sido eliminadas, y por lo tanto no los importa de nuevo!
¿Cómo podría hacer esto?
El registro de correos recibidos en la sección de configuración de administración muestra los correos electrónicos entrantes que crearon las publicaciones que ahora están eliminadas, pero no hay un hipervínculo para ir a la publicación (ya que ahora está eliminada). Supongo que tengo que borrar toda evidencia del correo electrónico entrante original, pero no tengo idea de cómo hacerlo.
A menos que tengas cientos de miles de publicaciones, lo que recomiendo es borrar la base de datos y empezar de nuevo. Si quieres hacerlo de una manera más dolorosa que probablemente te cause problemas, puedes averiguar cómo eliminar los PostCustomFields que contienen los IDs de importación. Si quieres eliminarlos todos, puedes usar PostCustomField.all.destroy_all, pero si vas a hacer eso, entonces podrías hacerlo de la manera fácil.
Cuando dices ‘borrar la base de datos’, ¿te refieres a todos los temas y publicaciones de Discourse y también a todos los registros de correos electrónicos entrantes que pasaron por el importador (pero dejando intacta la estructura de Discourse y los usuarios, etc.)? ¿O te refieres a la base de datos de correos electrónicos importados, lo que dejaría las publicaciones existentes en su lugar pero me permitiría volver a ejecutar el importador con correos electrónicos antiguos?
Oh. Si has estado ejecutando tu importación en una instancia activa que ha tenido usuarios añadiendo publicaciones y demás, entonces estás en un gran problema.
Si has eliminado todas las publicaciones importadas, puedes hacer algo como
¡Muchas gracias @pfaffman! Eso parece haber funcionado, aunque no estoy del todo seguro de lo que sucedió tras bambalinas.
Usé ./launcher enter app, luego escribí rails c, luego PostCustomField.where(name: "import_id").destroy_all y apareció mucha escritura (con algunas partes en rojo y verde), luego, al salir de rails y volver a ejecutar import_mbox.sh, los correos electrónicos originales que se habían importado y luego eliminado por mí (al eliminar los temas) aparecieron de nuevo en Discourse. Si copio correos electrónicos a la otra carpeta de categoría, también se reimportan, como duplicados, como sospechaba.
Es solo un foro de prueba con algunas respuestas adicionales como pruebas para que la gente las mire antes de decidir si mudarnos o no a Discourse, por lo que borrar y reiniciar no habría sido una gran pérdida.
También mencionaste borrar la base de datos y reimportar todo. ¿Cuál es la forma más fácil de borrarla?