Documentation 플러그인 - 복원 후 Index Topic이 작동하지 않음

몇 달 전에 Discourse를 설치하고, Documentation Mode 섹션에 일부 주제를 Index Topic으로 추가했습니다. 모든 것이 예상대로 잘 작동했습니다.
모든 것을 백업하고 Digital Ocean 계정을 삭제하는 등 작업을 진행했습니다.

며칠 전 Discourse를 다시 설치하고, 이전에 만든 백업 파일에서 모든 것을 복원했는데, Documentation 섹션을 제외한 모든 것이 잘 작동합니다. 처음에는 해당 인덱스 주제를 비공개(unlisted)로 설정했기 때문인 줄 알았지만, 모든 것을 삭제하기 전에 이미 비공개 상태였고 그때는 잘 작동했으므로 그 문제가 아니었습니다. 그래도 목록에 표시(list)해 보았지만 소용이 없었습니다. 사이드바에는 여전히 카테고리 등 기본 설정된 항목들이 그대로 표시되었습니다.

그런 다음 원래 주제의 내용을 복사하여 새로운 주제로 만들고, 이를 Index Topic으로 설정해 보았는데, 이 주제는 잘 작동했습니다. 작동하지 않는 주제와 마찬가지로 닫고(closed) 비공개(unlisted)로 설정했는데, 닫기나 비공개 설정이 문제가 아니라는 것을 확인했습니다.

복원 과정에서 어떤 이유로든 documentation mode가 깨지는 것 같습니다.

확인 차원에서 여쭤봅니다 - 이것 보셨나요?

링크 공유해 주셔서 감사합니다.
아직 전체 구조를 구축 중이라, 결국 새 주제를 만들고 기존 주제의 내용을 복사해서 붙여넣은 뒤, 기존 주제를 삭제했습니다. 어차피 그런 주제가 2개뿐이었거든요.

그래서 질문이 있습니다: 그 rake task는 Discourse를 업데이트할 때마다 실행해야 하는 건가요? 아니면 나중에 다시 복구할 때만 하면 되는 건가요?

아니요, 그 rake 태스크는 인용된 게시물의 날짜 기준으로 한 번만 실행되는 것이에요.

다만, 주제를 다시 만들 필요는 없어요. 카테고리 설정으로 가서 연결을 해제한 후 저장하고, 기존 주제를 다시 연결하기만 하면 최소한은 작동할 거예요.

호기심이 생겨서问一下 - 왜 이걸 마이그레이션으로 구현하지 않았을까요?

그때 내가 기억하는 바로는 — 마이그레이션일 수는 없었다. 마이그레이션은 이상적으로는 애플리케이션 코드를 건드리지 않아야 한다(코드가 마이그레이션의 의도와 달라져서 오류가 발생할 수 있기 때문).

PR에서도 그 이유가 명시되어 있다:

이 PR에는 활성 문서 인덱스 주제에서 사이드바 섹션과 링크를 다시 빌드하기 위한 레이크 태스크(doc_categories.rake)도 포함되어 있습니다. 이는 파서를 사용하거나 nokogiri를 사용해야 하므로, 구현이 달라져서 잘못된 마이그레이션을 초래할 수 있기 때문에 마이그레이션에서 수행하는 것은 권장되지 않습니다.

네, 제 이해가 맞다면 앞으로는 그 작업을 전혀 할 필요가 없다는 건가요? Discourse를 업데이트할 때마다 rake 태스크나 재링크 과정을 실행할 필요가 없다는 뜻인가요?

제 이해가 맞는지 확인하고 싶었습니다.

응. 일회성이었어.

멋지네요! 설명해 주셔서 감사합니다! :raising_hands:

인덱스 주제를 수정할 때마다 이 과정을 반복해야 하는 것 같아 정말 귀찮습니다.

무엇을 놓치고 있는 걸까요?

안녕하세요, Nat님. 이 문제를 확인했습니다.

실제로 문제가 있는 것 같지만, 이를 안정적으로 재현해야 합니다. 다음 주쯤 좋은 소식으로 다시 돌아올 수 있기를 바랍니다.

@nathank 빠른 질문인데, discourse-calendar이 활성화되어 있나요?

@nathank 캘린더 플러그인이 활성화되어 있을 때 문제가 발생할 수 있다고 생각합니다(PR에서 설명되어 있음). 기본적으로 Calendar의 부작용(버그)으로 인해 Docs Categories 플러그인이 주제를 재인덱싱하지 않았습니다. 이 수정으로 인해 재인덱싱이 안정적으로 수행됩니다.

이 수정이 문제를 해결하지 못하면 알려 주세요.

답변이 늦어서 죄송합니다 - 네!

신속하게 선제적으로 문제를 해결해 주셔서 감사합니다. 곧 제 사이트를 업데이트해서 테스트해 보겠습니다.