Импорт постов с использованием Markdown

Я немного переписал discourse/script/import_scripts/json_generic.rb at main · discourse/discourse · GitHub для своих данных. Это работает хорошо, но я не могу понять, как заставить Discourse использовать Markdown в импортируемых постах.

Например, пост может выглядеть так:
**какой-то текст здесь жирным** и что-то еще здесь
После импорта Discourse отображает это в точности так, как есть, не используя синтаксис Markdown ** для выделения жирным части «какой-то текст здесь жирным». И странно, но если я попробую отредактировать такой пост через обычный графический интерфейс Discourse, он проигнорирует любое форматирование.

В скрипте импорта используется:
cook_method: Post.cook_methods[:raw_html],
Я также пробовал:
cook_method: Post.cook_methods[:regular],
без каких-либо видимых изменений.

Как можно заставить Discourse распознавать Markdown при импорте данных?

Даже если вы добавите отформатированный текст в конец поста, этот текст не будет отформатирован?

Помогает ли функция «Перестроить HTML»?

Да, это очень странно. Предпросмотр выглядит правильно, но если я сохраню редактирование, отображается неформатированное сообщение.

Перестроить HTML не помогает.

Как выглядят необработанные данные в базе данных? Можете ли вы проверить это через Data Explorer или вывести в консоли Rails?

Можете ли вы убедиться, что задача rebaking выполняется в Sidekiq при запуске Rebuild HTML?

Или выполните rebaking через консоль Rails, чтобы проверить наличие ошибок?

Это лишь случайные предложения :person_shrugging: Похоже, что пост не был обработан.

Спасибо!

Выполнение SELECT raw=cooked FROM posts WHERE ... возвращает true для этого поста.

Я не понимаю, что это значит, и как это проверить :smiley: Можешь подсказать?

Я выполнил bundle exec rake posts:rebake, но пост остался таким же, как и раньше, и ведёт себя так же при редактировании.

Забудьте об этом, это всё равно не поможет.

Я создал бы новый пост, в который вставил бы тот же самый markdown-контент, что и в одном из неформатированных постов.

Я ожидал бы, что Discourse правильно отформатирует новый пост.

Затем я сравнил бы поле raw обоих постов; это можно сделать либо через Data Explorer, либо через rails console.

Если один пост отформатирован после обработки, а другой нет при пересборке HTML (которая переделывает пост), то в их поле raw должно быть различие. :thinking:

Что произойдет, если вы отредактируете пост? Выглядит ли он так, как вы ожидаете? Корректно ли он отображается после редактирования и сохранения?

Я взял один из нарушающих правила постов, перешёл в режим редактирования, скопировал содержимое и создал новый пост с ним. Новый пост использует разметку Markdown: я вижу жирный текст и ссылку с заголовком.

В базе данных их поле raw идентично, но поле cooked — нет.

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

Нажатие кнопки «Rebuild HTML» на плохо отформатированных постах не даёт никаких изменений.

/logs/ в данный момент ничего не показывает (только более старые предупреждения и ошибки).

Когда я редактирую его, предварительный просмотр выглядит правильно, форматирование Markdown применяется (например, “foo”). Как только я сохраняю, в посте всё ещё отображаются символы форматирования (например, “**foo**”).

Попробуйте выполнить

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

в консоли Rails, а затем снова нажмите «Повторно создать HTML».

Обратите внимание: это обновит все ваши сообщения, установив для них обычный метод приготовления.

/var/www/discourse$ bundle exec rails c
Загрузка производственной среды (Rails 7.0.7)
irb(main):001:0> Post.update_all(cook_method: Post.cook_methods[:regular])
=> 13809
irb(main):002:0>

Готово! К сожалению, изменений не произошло.


Но я решил проблему. Извините, что не упомянул установленные плагины, так как они могли влиять на процесс…

У меня был установлен и включён плагин Topic Ratings для категории, в которую импортируются мои данные.

На impulse я отключил плагин и снова попытался отредактировать «сломанный» пост. Теперь при сохранении форматирование Markdown корректно применялось для красивого отображения. Я снова включил плагин и попробовал ещё раз — успешно. Я импортировал новые посты, и теперь они также отображаются правильно (используя cook_method: Post.cook_methods[:regular]).

Я не знаю, что именно происходило, но, похоже, проблема была решена путём повторного включения и выключения плагина Topic Ratings вот так.

Спасибо всем за отличные предложения и помощь в поиске проблемы!