도움 주세요: 게시글 조리 과정 이해하기

안녕하세요,
게스트 후 처리(post cooking process)가 어떻게 작동하는지 이해하는 데 도움을 주실 분이 계셨으면 좋겠습니다. 특히 아래 부분에 관심이 있습니다:

왜 게시물이 이미 'cook’된 후에 후 처리(post processing)가 일어나는 것인가요?

만약 oneboxes나 "특정 사용자의 인용"과 같은 기능이 아직 존재하지 않는다면, 이러한 기능을 추가하기 위해 어떤 과정이 필요할지 함께 살펴볼 수 있을까요? 그래서 Prettytext를 알게 되었습니다: discourse/app/assets/javascripts/pretty-text at f9608c0af5f7b1109117a5aba979acb00c28cf9a · discourse/discourse · GitHub
여기서는 마크다운으로의 변환과 마크다운에서 다른 형식으로의 변환, 그리고 미리보기 박스의 렌더링을 처리합니다. 또한 백엔드의 게시글 모델(post model)에서 rebake 함수도 찾았습니다:

이것은 postanalyzer의 cook 메서드를 호출합니다:

이 함수는 백엔드에서 자바스크립트 마크다운 변환을 실행합니다:

제 생각에는 코드 중복을 줄이기 위해 이렇게 처리되는 것 같았습니다. 하지만 위에서 링크한 CookedPostProcessor를 발견했습니다. 일부 처리는 자바스크립트로만 수행되는 반면, 일부는 자바스크립트와 루비(Ruby) 모두에서 CookedPostProcessor를 통해 수행되는 것 같습니다. 따라서 요약하면: 1. 마크다운으로의 변환과 마크다운에서 다른 형식으로의 변환 규칙이 필요합니다(이것은 자바스크립트로만 이루어지는 것으로 보입니다). 2. HTML을 생성하는 코드가 필요합니다(일부는 자바스크립트이지만 일부는 루비로도 이루어져 있습니다). (2.)가 왜 부분적으로 자바스크립트로, 부분적으로 루비로 처리되는지 궁금합니다. 예시를 들어 설명해 주실 수 있을까요? 또한 이 게시물에서 제가 잘못 이해한 부분이 있다면 수정해 주시면 매우 감사하겠습니다.

감사합니다! :smiley:
Spirobel

먼저, js 콘솔의 네트워크 탭을 확인하여 게시글이 생성될 때 프론트엔드에서 어떤 데이터가 수집되어 서버로 전달되는지 파악해 보세요. 이는 rails API로 전송되는 모든 데이터가 rails에서 추가로 처리된다는 것을 의미합니다. 그런 다음 posts 테이블에서 raw와 cooked 컬럼을 확인하면, 각각 게시글의 처리 전과 처리 후 형태를 보여줍니다.

네, 답변 감사합니다. 저는 이걸 조각조각 나눠서 살펴보는 게 좋을 것 같아요. 아마도 제가 취했던 ‘첫 원리부터 생각하기’ 방식은 이 구조가 역사적 이유로 형성되었기 때문에 통하지 않는 것 같습니다.