Logramos migrar de flarum.amybo.org a discourse forum.amybo.org, pero el foro ahora está plagado de problemas de formato. Por ejemplo:
@\"Gerrit\"#p174 Me gusta la idea de un líquido a base de agua (al igual que el de Rabaey), así que revisé los ingredientes de [Nutrisorb Trace Minerals](https://www.biocare.co.uk/nutrisorbr-liquid-trace-minerals-15ml):
1. Agua purificada,
2. Borato de sodio,
3. Conservante (ácido cítrico),
<r>
<p>
<POSTMENTION discussionid="25" displayname="Gerrit" id="174" number="8">@\"Gerrit\"#p174</POSTMENTION> Me gusta la idea de un líquido a base de agua (al igual que el de Rabaey), así que revisé los ingredientes de <URL url="https://www.biocare.co.uk/nutrisorbr-liquid-trace-minerals-15ml"><s>[</s>Nutrisorb Trace Minerals](https://www.biocare.co.uk/nutrisorbr-liquid-trace-minerals-15ml)<s></s></URL>
</p>
<LIST type="decimal">
<LI><s>1.</s> Purified Water, </LI>
<LI><s>2.</s> Sodium Borate, </LI>
<LI><s>3.</s> Preservative (Citric Acid), </LI>
</LIST>
¿Hay alguna forma recomendada de solucionar esto?
Sería increíble si se pudiera automatizar en todo el foro (sin mostrar cada publicación como editada), pero, si no, una solución semi-automatizada que pudiéramos aplicar publicación por publicación sería mejor que tener que eliminar manualmente cada etiqueta HTML para volver a markdown.
El momento de arreglar eso fue cuando hiciste la importación. Como alguien que hace muchas migraciones, que la gente lance un foro con un formato defectuoso como este es una de mis mayores preocupaciones. Habría sido bastante fácil arreglar el script de importación, y mucho más difícil arreglarlo a posteriori ahora que has lanzado. Habría sido quizás una o dos horas entonces, y ahora es 2-5 veces más trabajo.
Sí, se podría escribir un script que limpiara las cosas en el foro activo y, o bien (aterrador) no mantuviera las ediciones (por lo que no habría edición ni notificaciones), o bien hiciera la edición y le dijera que no actualizara/notificara. Estoy bastante seguro de que lo he hecho antes. Harías algo como:
fixes = Post.where("raw like '%algo roto%'")
fixes.each do |p|
new_raw = p.raw.gsub!(algunas cosas)
PostRevisor.new(p).revise!({raw: new_raw, edit_reason: 'arreglador de publicaciones!'}, {bypass_bump: true)
end
Creo que puedes usar el comando posts:remap de Rake (consulta Replace a string in all posts para lograrlo); no deberías tener una edición con ese comando.
Correcto. Estás llamando a la tarea en un shell, por lo que averiguar rápidamente si estás escapando de Bash, Ruby o la expresión regular se vuelve difícil o imposible. Además, parece que las correcciones no serán reemplazos simples.
¿Utilizaste el script flarum_import.rb existente? Es difícil imaginar que el HTML esté en el campo p.content de Flarum (que es lo que va en raw en el script de importación). Estoy bastante seguro de que Flarum usa markdown, así que no sé por qué tendrías HTML en raw. O tal vez el script está simplemente roto.
Pero el tachado es lo que está en el HTML. Quizás puedas arreglar eso con CSS.
Arreglar el \u003cPOSTMENTION\u003e es un poco más complicado ya que Discourse tiene citas, pero no menciones. La solución fácil sería simplemente cambiarlas por un simple @${displayname} (y esperar que el nombre de usuario sea el mismo que antes de la importación, o hacer una búsqueda en user_custom_fields para encontrar el nombre de usuario actualizado. Otra cosa que podrías hacer sería incluir un enlace como @mention dijo [aquí](/t/-/\u003cdiscourse ID for topic 25\u003e/\u003c8\u003e)).
Una solución loca sería escribir un script que extraiga el markdown de la base de datos de Flarum y actualice el campo raw para incluirlo. Aún necesitaría ser un poco limpiado (en cuanto a menciones y POSTMENTIONS), pero arreglaría muchas cosas.
Otra idea sería congelar tu sitio, hacer una eliminación masiva de todos los datos importados, arreglar el script de importación y ejecutarlo de nuevo.
Pero no tienes muchas publicaciones nuevas desde que te mudaste, así que tal vez podrías guardarlas de alguna manera, hacer una importación nueva en una base de datos vacía y luego agregarlas de nuevo. Tratar con nuevos usuarios sería un poco más difícil.
Si tienes presupuesto, puedes contactarme o publicar en Marketplace.
Gracias Jay, no hice la migración yo mismo, así que no sé qué script se usó. El miembro que lo hizo está con gripe, pero le señalaré tu excelente consejo aquí, cuando regrese.