마크다운으로 게시글 가져오기

저는 제 데이터에 맞게 discourse/script/import_scripts/json_generic.rb at main · discourse/discourse · GitHub 스크립트를 조금 수정했습니다. 잘 동작은 하지만, 가져온 게시물에서 마크다운을 사용하게 하는 방법을 모르겠습니다.

예를 들어 게시물이 다음과 같다고 가정해 보겠습니다.
**여기 굵은 글씨로 표시할 텍스트** 그리고 다른 내용들
가져온 후 Discourse에서는 마크다운 ** 문법을 사용하여 “여기 굵은 글씨로 표시할 텍스트” 부분을 굵게 표시하는 대신, 해당 텍스트를 그대로(verbatim) 표시합니다. 이상하게도, 일반적인 Discourse GUI로 그런 게시물을 편집하려고 해도 어떤 서식이든 무시됩니다.

가져오기 스크립트에는 다음이 사용되고 있습니다.
cook_method: Post.cook_methods[:raw_html],
다음도 시도해 보았지만,
cook_method: Post.cook_methods[:regular],
가시적인 변화는 없었습니다.

데이터를 가져올 때 Discourse가 마크다운을 인식하게 하려면 어떻게 해야 하나요?

게시글 끝에 서식이 적용된 텍스트를 추가해도 해당 텍스트에 서식이 적용되지 않나요?

Rebuild HTML을 실행하면 어떤 효과가 있나요?

네, 정말 이상합니다. 미리보기는 정상적으로 보이지만, 편집을 저장하면 포맷이 적용되지 않은 게시글이 표시됩니다.

Rebuild HTML로 해결되지 않습니다.

데이터베이스에서 원본(raw) 데이터가 어떻게 보이는지 데이터 탐색기(data explorer)로 확인해 볼 수 있나요? 아니면 rails 콘솔에서 출력해 보세요.

Rebuild HTML을 트리거할 때 Sidekiq에서 rebaking 작업이 실행되는지 확인해 주실 수 있나요?

아니면 rails 콘솔에서 rebaking을 실행해서 어떤 오류가 있는지 확인해 보세요.

이것들은 그냥 대충 떠오른 제안들입니다 :person_shrugging: 게시물이 제대로 cooked되지 않은 것처럼 보입니다.

감사합니다!

SELECT raw=cooked FROM posts WHERE ...를 실행하면 해당 게시글에 대해 true가 반환됩니다.

그게 무슨 의미인지, 어떻게 확인할 수 있는지 전혀 모르겠습니다 :smiley: 힌트를 주실 수 있을까요?

bundle exec rake posts:rebake를 실행해 보았는데, 게시글은 이전과 동일하고 편집할 때의 동작도 이전과 같습니다.

그건 잊어버리세요. 결국 도움이 안 될 것 같습니다.

포맷이 적용되지 않은 게시물 중 하나의 마크다운 콘텐츠를 그대로 붙여넣는 새 게시물을 만들겠습니다.

새 게시물이 Discourse에 의해 올바르게 포맷되기를 기대합니다.

그 다음, 두 게시물의 raw 필드를 비교해 보겠습니다. data explorer나 rails console을 사용할 수 있습니다.

HTML을 다시 빌드할 때(게시물을 다시 재배키할 때) 하나는 쿡(cooked)된 상태로 포맷이 적용되고 다른 하나는 적용되지 않는다면, 두 게시물의 raw에 반드시 차이가 있어야 합니다. :thinking:

게시물을 수정하면 어떻게 되나요? 예상대로 보이나요? 수정 후 저장하면 올바르게 렌더링되나요?

문제가 되는 게시물 중 하나를 선택하여 편집 모드로 들어간 후, 내용을 복사해서 새 게시물을 작성했습니다. 새 게시물에는 마크다운 서식이 적용되어 있으며, 굵은 글자와 제목이 있는 링크를 확인할 수 있습니다.

데이터베이스에서 두 게시물의 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/에는 현재 이 시점에 아무것도 표시되지 않습니다(오래된 경고와 오류만 있음).

편집할 때는 미리보기가 올바르게 표시되고, 마크다운 서식이 적용되어 있습니다(예: “foo”). 하지만 저장하면 게시글에는 여전히 서식 문자가 그대로 표시됩니다(예: “**foo**”).

다음 코드를 Rails 콘솔에서 실행해 본 후 다시 "Rebuild HTML"을 눌러 볼 수 있을까요?

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

참고로 이 작업은 모든 게시물의 조리 방법을 regular로 업데이트합니다.

/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>

완료! 하지만 여전히 변화가 없습니다.


하지만 문제를 해결했습니다. 플러그인 간섭이 될 수 있음에도 불구하고 설치된 플러그인에 대해 언급하지 않은 점 사과드립니다…

내 가져오기가 들어가는 카테고리에 Topic Ratings Plugin이 설치되어 있고 활성화되어 있었습니다.

임의로 플러그인을 비활성화하고 다시 “손상된” 게시글을 편집해 보았습니다. 이제 저장 시 마크다운 포맷이 화려한 렌더링에 사용되었습니다. 플러그인을 다시 활성화하고 성공적으로 다시 시도했습니다. 새로운 게시글을 가져오기도 했고, 이제 게시글이 올바르게 렌더링됩니다(cook_method: Post.cook_methods[:regular] 사용).

거기서 무슨 일이 일어나고 있는지/있었는지는 전혀 모르겠지만, Topic Ratings Plugin을 끄고 다시 켜서 수정된 것 같습니다.

훌륭한 제안과 문제 해결에 도움을 주신 모든 분께 감사합니다!