Instalei com sucesso o Discourse usando o serviço de nuvem da Digital Ocean com o objetivo de migrar algumas listas de mala direta do listserv, se parecer que consigo fazer o Discourse fazer tudo o que precisamos. Durante os testes, usei o Thunderbird no Windows 10 para salvar novos e-mails que chegam da lista de mala direta a cada poucos dias em uma pasta no Windows, que depois copio para a pasta /var/discourse/shared/standalone/import/data/ExampleCategory1 (ou ExampleCategory2) usando o FileZilla. Em seguida, inicio o contêiner de importação do Docker e executo o import_mbox.sh. Até agora, tudo funcionou bem e posso fazer o Discourse replicar manualmente o que chegou através das listas de mala direta em que estou.
No entanto, imagine que tenho ExampleCategory1 e ExampleCategory2 como categorias e coloco os e-mails destinados à primeira pasta, ExampleCategory1, na segunda, ExampleCategory2, por engano, e depois executo a importação antes de perceber. (O arrastar e soltar deu errado no FileZilla!)
Agora tenho os e-mails de uma lista de mala direta na categoria de outra, por engano.
Para corrigir isso, deletei todos os tópicos/postagens em ExampleCategory2 usando a interface web, e também usando o comando rake destroy:topics["ExampleCategory2"] depois, para garantir, com o plano de apenas executar o import_mbox.sh novamente (tenho cópias de todos os e-mails que deveriam estar em cada categoria). No entanto, o Discourse parece se lembrar de quais e-mails ele importou, mesmo que as postagens tenham sido excluídas, e, portanto, não os importará novamente!
Como posso fazer isso?
O log de e-mails recebidos na seção de configurações do administrador mostra os e-mails de entrada que criaram as postagens que agora foram excluídas, mas não há hiperlink para levá-lo à postagem (já que ela foi excluída). Presumo que eu tenha que limpar toda a evidência do e-mail de entrada original, mas não tenho ideia de como fazer isso.
A menos que você tenha centenas de milhares de posts, o que eu recomendo é apagar o banco de dados e começar de novo. Se você quiser fazer isso de uma maneira mais dolorosa e que provavelmente causará problemas, você pode descobrir como excluir os PostCustomFields que contêm os IDs de importação. Se você quiser excluir todos eles, pode fazer PostCustomField.all.destroy_all, mas se for fazer isso, então é melhor fazer do jeito fácil.
Quando você diz ‘limpar o banco de dados’, você quer dizer todos os tópicos e postagens do Discourse e também todos os registros de e-mails recebidos que passaram pelo importador (mas deixar a estrutura do Discourse e usuários intactos)? Ou você quer dizer o banco de dados de e-mails importados, o que deixaria as postagens existentes no lugar, mas me permitiria reexecutar o importador com e-mails antigos?
Muito obrigado @pfaffman! Isso parece ter funcionado, embora eu não tenha certeza do que aconteceu nos bastidores.
Eu usei ./launcher enter app, depois digitei rails c, então PostCustomField.where(name: "import_id").destroy_all e muita escrita apareceu (com algumas partes coloridas de vermelho e verde), depois quando saí do rails e executei novamente import_mbox.sh os e-mails originais que haviam sido importados anteriormente e depois deletados por mim (removendo os tópicos) apareceram novamente no discourse. Se eu copiar e-mails para a outra pasta de categoria, eles também são reimportados, como duplicatas, como eu suspeitava.
É apenas um fórum de teste com algumas respostas adicionais como testes para as pessoas olharem antes de decidirmos se mudamos ou não para o discourse, então apagar e reiniciar não teria sido uma grande perda.
Você também mencionou apagar o banco de dados e reimportar tudo. Qual é a maneira mais fácil de apagar?