Importation de messages avec Markdown

J’ai un peu réécrit discourse/script/import_scripts/json_generic.rb at main · discourse/discourse · GitHub pour mes propres données. Cela fonctionne bien, mais je n’arrive pas à comprendre comment faire en sorte que Discourse utilise Markdown dans les publications importées.

Par exemple, une publication pourrait être :
**du texte ici en gras** et autre chose ici
Après l’importation, Discourse l’affiche telle quelle, sans utiliser la syntaxe Markdown ** pour mettre en gras la partie « du texte ici en gras ». Et, étrangement, même si j’essaie de modifier une telle publication en utilisant l’interface graphique normale de Discourse, elle ignorera toute mise en forme.

Le script d’importation utilise :
cook_method: Post.cook_methods[:raw_html],
J’ai aussi essayé :
cook_method: Post.cook_methods[:regular],
sans aucun changement visible.

Comment puis-je faire en sorte que Discourse reconnaisse Markdown lors de l’importation de données ?

1 « J'aime »

Même si vous ajoutez du texte formaté à la fin du message, ce texte ne sera pas formaté ?

Est-ce que Rebuild HTML fait quelque chose ?

1 « J'aime »

Oui, c’est super bizarre. L’aperçu est correct, mais si je sauvegarde la modification, le message non formaté est affiché.

Reconstruire HTML ne résout pas le problème.

À quoi ressemble le contenu brut dans la base de données, pouvez-vous le vérifier avec le data explorer ? Ou l’afficher dans la console Rails.

Pouvez-vous vous assurer que le travail de re-cuisson est exécuté dans Sidekiq lorsque vous déclenchez Rebuild HTML ?

Ou re-cuire avec la console Rails pour voir s’il y a une erreur ?

Ce ne sont que des suggestions aléatoires :person_shrugging: Il semble que le message n’ait pas été cuit.

1 « J'aime »

Merci !

Utiliser SELECT raw=cooked FROM posts WHERE ... renvoie true pour le message.

Je n’ai aucune idée de ce que cela signifie ni de la façon dont je peux vérifier cela :smiley: Pourriez-vous me donner une piste ?

J’ai exécuté bundle exec rake posts:rebake et le message est le même qu’avant et se comporte de la même manière qu’avant lors de la modification.

Oubliez ça, ça n’aidera pas finalement.

Je créerais un nouveau post dans lequel je collerais le même contenu markdown que l’un des posts non formatés.

Je m’attendrais à ce que le nouveau post soit correctement formaté par Discourse.

Ensuite, je comparerais le champ raw des deux posts ; soit avec data explorer, soit avec la console rails.

Si l’un est formaté lorsqu’il est cuit, et l’autre ne l’est pas lorsque vous reconstruisez le HTML (ce qui refait le post), il devrait y avoir une différence dans leur raw. :thinking:

Que se passe-t-il si vous modifiez la publication ? Est-ce que cela ressemble à ce que vous attendez ? Est-ce que cela s’affiche correctement si vous modifiez et enregistrez ?

J’ai pris l’un des messages incriminés, je suis passé en mode édition, j’ai copié le contenu et j’ai créé un nouveau message avec. Le nouveau message utilise le formatage Markdown, je vois du texte en gras et un lien avec un titre.

Dans la base de données, leur raw est identique mais leur cooked ne l’est pas.

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

Cliquer sur « Reconstruire le HTML » sur les messages mal formatés ne change rien.

/logs/ ne montre rien à ce moment-là (seulement d’anciens avertissements et erreurs).

Lorsque je le modifie, l’aperçu est correct, le formatage Markdown y est appliqué (par exemple, « foo »). Une fois que j’enregistre, le message affiche toujours les caractères de formatage (par exemple, « **foo** »).

Pouvez-vous essayer d’exécuter

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

dans la console Rails, puis de nouveau « Reconstruire le HTML » ?

Notez que cela mettra à jour tous vos articles pour utiliser la méthode de cuisson normale.

1 « J'aime »
/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>

Terminé ! Malheureusement, aucun changement.


Mais j’ai résolu le problème. Et je suis désolé de ne pas avoir mentionné les plugins que j’avais installés car ils peuvent interférer…

J’ai le Plugin Topic Ratings installé et activé pour la catégorie dans laquelle mes importations vont.

Sur un coup de tête, j’ai désactivé le plugin et j’ai de nouveau essayé de modifier un post “cassé”. Maintenant, lors de la sauvegarde, le formatage Markdown a été utilisé pour un rendu sophistiqué. J’ai réactivé le plugin et j’ai essayé à nouveau avec succès. J’ai importé de nouveaux posts et cela rend également les posts correctement maintenant (en utilisant cook_method: Post.cook_methods[:regular]).

Je n’ai aucune idée de ce qui se passe/s’est passé, mais cela semble avoir été résolu en activant et désactivant à nouveau le Plugin Topic Ratings ici.

Merci à tous pour vos excellentes suggestions et votre aide à la recherche de problèmes !

1 « J'aime »

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