discourse.org에서 호스팅되는 토픽 목록 항목 아래에 토픽 게시글을 중첩으로 추가하는 방법은? 즉, 토픽 목록을 피드로 활용하는 방법

여러분 안녕하세요,

이번 주에 우리는 Discourse 테마 커스터마이징을 위한 첫 번째 스프린트를 시작했습니다. 디자인이 기존 Discourse 테마와 상당히 다르기 때문에 상당수의 파일을 수정해야 할 것임을 알고 있었습니다.

우리의 접근 방식은 매우 간단합니다: SASS만으로 필요한 것을 달성하려 하고, 필요한 경우 해당 .hbs/.hbr 파일을 오버라이드합니다. 후자의 경우 유지보수 리스크가 일부 증가한다는 것을 알고 있습니다(뷰에 전달되는 속성이 이름이 변경되거나 제거되면 템플릿이 깨지므로). 우리는 이러한 상황이 발생할 리스크를 자체 인프라를 유지보수하는 것과 비교해 본 결과, 비영리 고객에게 discourse.org 호스팅이 더 큰 가치를 제공한다고 결론 내렸습니다. 사이트에 일부 모니터링 코드를 추가하고, 이런 일이 발생했을 때를 위한 대응 계획을 마련할 것입니다. 또한 이런 일이 발생하더라도 쉽게 수정할 수 있을 것으로 추정됩니다.

자, 이제 이 게시물의 본론으로 들어가겠습니다. 우리는 주제 목록(Topics List) 뷰를 피드(feed)와 같은 경험으로 전환하는 방법을 알아내야 합니다. 즉, 각 주제(Topic) 아래에서 답변 게시글이 댓글로 렌더링되도록 해야 합니다.

우리가 구축해야 할 것의 예시 이미지입니다(현재 각 주제당 댓글 1개만 표시되고 있으며, 경우에 따라 더 많은 댓글을 표시해야 합니다)

현재 진행 상황

@iainbamboo 님이 이 문제를 해결하기 위해 깊이 파고들었습니다:

  1. 게시글 데이터가 이미 주제 목록에 있는지, 단순히 템플릿만 변경하면 되는지 → 아니요, 없습니다.
  2. 템플릿에서 렌더링할 수 있도록 각 주제의 게시글 데이터를 목록에 추가하는 방법은 무엇인지?
    1. 이것이 올바른 접근 방식인지?
    2. Discourse Timeline과 유사한 방향으로, 전송되는 모델에 데이터를 추가하기 위해 루비 코드를 수정하는 것(플러그인으로 구현하는 경우)을 고려해야 하는지? 플러그인을 만들면 discourse.org에서 사용할 수 있는지?
    3. 에임버(Ember)에서 데이터를 가져와서 각 주제의 게시글을 가져오기 위해 서버로 여러 AJAX 요청이 발생하여 로딩이 느려지는 비용을 감수하는 것(레이트 리밋에 도달할 위험이 있음)
    4. 루비 코드를 수정하지 않고 이것을 할 수 있는지?

여러 곳을 상당히 둘러보고, Discourse 개발 가이드를 읽으며 소스 코드를 검토한 끝에, 우리는 이 문제를 해결하는 최선의 방법에 대해 전문가의 조언이 필요하다고 결론 내렸습니다.

그리고 이제 우리가 여기에 온 것입니다 :slight_smile:

테마에서 프론트엔드로 이 작업을 시도하면 다양한 성능 및 레이트 리밋 문제가 발생할 수 있습니다… 백엔드에 더 익숙한 누군가가 의견을 제시해 주면 좋겠지만, 플러그인을 직접 만들어야 할 가능성이 매우 높다고 생각합니다.