Importando posts com Markdown

Eu reescrevi um pouco discourse/script/import_scripts/json_generic.rb at main · discourse/discourse · GitHub para meus próprios dados. Funciona bem, mas não consigo descobrir como fazer o Discourse usar Markdown nas postagens importadas.

Por exemplo, uma postagem pode ser
**algum texto aqui em negrito** e algo mais aqui
Após a importação, o Discourse o exibe literalmente assim, sem usar a sintaxe Markdown ** para colocar em negrito a parte “algum texto aqui em negrito”. E, estranhamente, mesmo que eu tente editar uma postagem assim usando a GUI normal do Discourse, ela ignorará qualquer formatação.

O script de importação usa
cook_method: Post.cook_methods[:raw_html],
Eu também tentei
cook_method: Post.cook_methods[:regular],
sem nenhuma mudança visível.

Como posso fazer o Discourse reconhecer Markdown ao importar dados?

1 curtida

Mesmo que você adicione texto formatado no final da postagem, esse texto não será formatado?

Reconstruir HTML faz alguma coisa?

1 curtida

Sim, é super estranho. A prévia parece correta, mas se eu salvar a edição, a postagem não formatada é exibida.

Reconstruir HTML não corrige isso.

Como está o raw no banco de dados, você pode verificar com o explorador de dados? Ou exibir no console do rails.

Você pode garantir que o trabalho de rebaking seja executado no Sidekiq quando você aciona Rebuild HTML?

Ou rebake com o console do rails para ver se há algum erro?

Essas são apenas sugestões aleatórias :person_shrugging: Parece que a postagem não foi “cozida”.

1 curtida

Obrigado!

Usar SELECT raw=cooked FROM posts WHERE ... retorna true para a postagem.

Não tenho ideia do que isso significa ou como posso verificar isso :smiley: Você poderia me dar uma dica?

Executei bundle exec rake posts:rebake e a postagem é a mesma de antes e se comporta da mesma forma de antes ao editar.

Esqueça isso, não vai ajudar afinal.

Eu criaria uma nova postagem na qual colaria o mesmo conteúdo markdown de uma das postagens não formatadas.

Eu esperaria que a nova postagem fosse devidamente formatada pelo Discourse.

Então, eu compararia o campo raw de ambas as postagens; seja com o explorador de dados ou com o console rails.

Se uma estiver formatada quando cozida, e a outra não estiver quando você reconstrói o HTML (que refaz a postagem), deve haver uma diferença em seu raw. :thinking:

O que acontece se você editar a postagem? Ela fica como você espera? Ela é renderizada corretamente se você editar e salvar?

Peguei uma das postagens problemáticas, entrei no modo de edição, copiei o conteúdo e fiz uma nova postagem com ele. A nova postagem usa a formatação Markdown, vejo texto em negrito e um link com um título.

No banco de dados, o raw delas é idêntico, mas o cooked não é.

SELECT (SELECT raw FROM posts WHERE id = 13846) = (SELECT raw FROM posts WHERE id = 13735);t

SELECT (SELECT cooked FROM posts WHERE id = 13846) = (SELECT cooked FROM posts WHERE id = 13735);f

Clicar em “Rebuild HTML” na postagem mal formatada não faz nenhuma alteração.

/logs/ não mostra nada neste momento (apenas avisos e erros antigos).

Quando eu edito, a prévia fica correta, a formatação Markdown é aplicada lá (por exemplo, “foo”). Assim que eu salvo, a postagem ainda mostra os caracteres de formatação (por exemplo, “**foo**”)

Você pode tentar executar

Post.update_all(cook_method: Post.cook_methods[:regular])

no console do Rails e depois “Rebuild HTML” novamente?

Note que isso atualizará todos os seus posts para usar o método de cozimento regular.

1 curtida
/var/www/discourse$ bundle exec rails c
Loading production environment (Rails 7.0.7)
irb(main):001:0> Post.update_all(cook_method: Post.cook_methods[:regular])
=> 13809
irb(main):002:0>

Feito! Infelizmente, nenhuma alteração.


Mas eu resolvi. E peço desculpas por não ter mencionado quais plugins eu tinha instalado, pois eles podem interferir…

Eu tenho o Plugin de Avaliações de Tópicos instalado e habilitado para a categoria para onde minhas importações vão.

Por impulso, desabilitei o plugin e tentei editar um post “quebrado” novamente. Agora, ao salvar, a formatação Markdown foi usada para renderização avançada. Reabilitei o plugin e tentei novamente com sucesso. Importei novos posts e agora ele também renderiza os posts corretamente (usando cook_method: Post.cook_methods[:regular]).

Não tenho ideia do que estava/está acontecendo lá, mas parece ter sido resolvido alternando o Plugin de Avaliações de Tópicos desligado e ligado novamente.

Obrigado a todos pelas ótimas sugestões e pela caça ao problema!

1 curtida

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.