특정 범주에서 해당 설정을 켜면 자동으로 닫힐 조건에 해당하는 매우 오래된 게시글이 많이 있다고 가정해 보겠습니다. 예를 들어, 5년간 활동이 없는 게시글을 자동으로 닫도록 설정을 켰을 때, 이 모든 게시글은 언제 자동으로 닫히나요? 저장 버튼을 클릭하는 즉시 닫히나요? 아니면 백그라운드에서 자동 정리 작업이 수행되나요? 이 작업이 성능 문제를 일으킬 가능성이 있나요?
두 번째 질문입니다. 범주의 시간을 변경하면 자동으로 닫힌 게시글이 다시 열리나요? 그렇지 않다고 생각합니다. 또한 인터페이스를 통해 일괄적으로 다시 여는 쉬운 방법이 없다고 가정하고 있습니다. 맞나요?
기존 주제는 설정을 저장하는 즉시 자동 닫히지 않습니다. 명시적으로 자동 닫힘을 적용하지 않는 한 열려 있는 상태로 유지됩니다.
기존 주제에 자동 닫힘 타이머를 적용하기 위해 서버 콘솔을 통해 실행할 수 있는 전용 스크립트(rake topics:apply_autoclose)가 있습니다. 이 스크립트는 조건에 맞는 주제(설정 기준으로 충분히 오래된 주제)를 조용히 닫아 알림을 최소화합니다.
스크립트를 사용하여 모든 오래된 주제에 설정을 한꺼번에 적용하는 것은 백그라운드 작업입니다. 커뮤니티 규모가 매우 크고 오래된 주제가 많다면 시간이 좀 걸릴 수 있지만, 서버 측에서 실행됩니다. 성능 영향은 호스팅 환경과 주제 수에 따라 다르지만, rake 작업은 대량 작업을 위해 설계되었으므로 건강하고 잘 프로비저닝된 Discourse 사이트에 심각한 영향을 미치지 않아야 합니다.
이에 대한 논의는 이곳에서 볼 수 있습니다:
자동 닫힘 시간을 변경해도 이미 닫힌 주제가 다시 열리지 않습니다(즉, 닫힘이 되돌려지지 않음).
닫힌 주제를 일괄적으로 다시 여는 내장 사용자 인터페이스 옵션은 없습니다.
그러나 스크립트나 Rails 콘솔 명령을 사용하여 주제를 일괄적으로 다시 열 수 있습니다.
Topic.where(closed: true).where("created_at < 'your_date'").find_each do |topic|
topic.update_status('closed', false, Discourse.system_user)
end