Conseguimos migrar de flarum.amybo.org para discourse forum.amybo.org, mas o fórum agora está repleto de problemas de formatação. Por exemplo:
@\"Gerrit\"#p174 Eu gosto da ideia de um líquido à base de água (assim como o da Rabaey), então verifiquei os ingredientes do [Nutrisorb Trace Minerals](https://www.biocare.co.uk/nutrisorbr-liquid-trace-minerals-15ml):
1. Água Purificada,
2. Borato de Sódio,
3. Conservante (Ácido Cítrico),
<r>
<p>
<POSTMENTION discussionid="25" displayname="Gerrit" id="174" number="8">@\"Gerrit\"#p174</POSTMENTION> Eu gosto da ideia de um líquido à base de água (assim como o da Rabaey), então verifiquei os ingredientes do <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> ingredientes:
</p>
<LIST type="decimal">
<LI><s>1. </s>Água Purificada, </LI>
<LI><s>2. </s>Borato de Sódio, </LI>
<LI><s>3. </s>Conservante (Ácido Cítrico), </LI>
</LIST>
Existe uma maneira recomendada de corrigir isso?
Seria incrível se pudesse ser automatizado em todo o fórum (sem mostrar cada postagem como editada), mas, se não, uma correção semi-automatizada que pudéssemos aplicar post a post seria melhor do que precisar remover manualmente cada tag HTML para reverter para markdown.
A hora de consertar isso foi quando você fez a importação. Como alguém que faz muitas migrações, pessoas lançando um fórum com formatação estragada como essa é uma das minhas maiores preocupações. Teria sido bem fácil consertar o script de importação, e muito mais difícil consertar a posteriori agora que você lançou. Teria levado talvez uma ou duas horas na época, e agora é 2-5 vezes mais trabalho.
Sim, poderíamos escrever um script que limpasse as coisas no fórum ativo e, ou (assustadoramente) não mantivesse as edições (então não haveria edição, nem notificações), ou fizesse a edição e dissesse para não notificar/atualizar. Tenho quase certeza de que já fiz isso antes. Você faria algo como:
fixes = Post.where("raw like '%something broken%'")
fixes.each do |p|
new_raw = p.raw.gsub!(some stuff)
PostRevisor.new(p).revise!({raw: new_raw, edit_reason: 'post fixer!'}, {bypass_bump: true})
end
Acredito que você possa usar o comando rake posts:remap (veja Replace a string in all posts para conseguir isso); você não deve ter uma edição com esse comando.
Certo. Você está chamando a tarefa em um shell, então descobrir rapidamente se você está escapando do Bash, Ruby ou da regex se torna difícil ou impossível. Além disso, parece que as correções não serão substituições simples.
Você usou o script flarum_import.rb existente? É difícil imaginar que o HTML esteja no campo p.content do Flarum (que é o que vai para raw no script de importação). Tenho certeza de que o Flarum usa markdown, então não sei por que você teria HTML em raw. Ou talvez o script esteja simplesmente quebrado assim.
Mas o riscado é o que está no HTML. Talvez você possa simplesmente corrigir isso com CSS.
Corrigir o <POSTMENTION> é um pouco mais complicado, já que o Discourse tem citações, mas não menções. A solução fácil seria simplesmente transformá-los em um simples @${displayname} (e esperar que o nome de usuário seja o mesmo de antes da importação, ou fazer uma consulta em user_custom_fields para encontrar o nome de usuário atualizado. Outra coisa que você poderia fazer seria incluir um link como @mention disse [aqui](/t/-/<ID do Discourse para o tópico 25>/<8>).
Uma solução maluca seria escrever um script que extraia o markdown do banco de dados do Flarum e atualize o campo raw para incluí-lo. Ele ainda precisaria ser um pouco limpo (quanto a menções e POSTMENTIONS), mas corrigiria muitas coisas.
Outra ideia seria congelar seu site, fazer uma exclusão em massa de todos os dados importados, corrigir o script de importação e executá-lo novamente.
Mas você não tem muitos posts novos desde que se mudou, então talvez você possa salvá-los de alguma forma, fazer uma nova importação em um banco de dados vazio e, em seguida, adicioná-los de volta. Lidar com novos usuários seria um pouco mais difícil.
Se você tem um orçamento, pode entrar em contato comigo ou postar em Marketplace.
Obrigado, Jay. Eu não fiz a migração, então não sei qual script foi usado. O membro que o fez está gripado, mas vou direcioná-lo para o seu excelente conselho aqui, quando ele voltar.