Digital Ocean의 클라우드 서비스를 사용하여 Discourse를 성공적으로 설치했습니다. Discourse가 우리가 필요한 모든 기능을 수행할 수 있을 것으로 보이면 일부 listserv 메일링 리스트를 이식하려는 목적입니다. 테스트하는 동안에는 Windows 10에서 Thunderbird를 사용하여 메일링 리스트에서 며칠에 한 번씩 도착하는 새 이메일을 Windows의 폴더에 저장하고, 이 파일을 FileZilla를 사용하여 /var/discourse/shared/standalone/import/data/ExampleCategory1(또는 ExampleCategory2) 폴더로 복사하고 있습니다. 그런 다음 import 도커를 시작하고 import_mbox.sh를 실행합니다. 지금까지는 모든 것이 잘 작동했으며, 제가 가입한 메일링 리스트를 통해 들어온 내용을 Discourse에서 수동으로 재현할 수 있었습니다.
하지만, ExampleCategory1과 ExampleCategory2를 카테고리로 두고, 실수로 첫 번째 폴더인 ExampleCategory1으로 가려던 이메일을 두 번째 폴더인 ExampleCategory2에 넣은 채로 발견하기 전에 임포트를 실행했다고 상상해 보세요. (FileZilla에서 드래그 앤 드롭이 잘못되었습니다!)
결국 실수로 한 메일링 리스트의 이메일이 다른 카테고리의 이메일이 되었습니다.
이를 수정하기 위해 웹 인터페이스를 사용하여 ExampleCategory2의 모든 주제/게시물을 삭제했고, 확실하게 하기 위해 그 후 rake destroy:topics[“ExampleCategory2”] 명령도 실행했습니다. 계획은 import_mbox.sh를 다시 실행하는 것이었습니다(각 카테고리에 있어야 할 모든 이메일의 사본을 가지고 있습니다). 하지만 Discourse는 게시물이 삭제되었음에도 불구하고 이미 임포트한 이메일을 기억하는 것 같아서, 다시 임포트하지 않습니다!
이 문제를 어떻게 해결할 수 있을까요?
관리자 설정 섹션의 수신 메일 로그에는 이제 삭제된 게시물을 생성했던 수신 이메일이 여전히 표시되지만, 해당 게시물로 이동할 수 있는 하이퍼링크는 없습니다(게시물이 삭제되었기 때문입니다). 원래 수신 이메일의 모든 흔적을 지워야 할 것 같지만, 어떻게 해야 할지 전혀 모르겠습니다.
수십만 개의 게시글이 있는 경우가 아니라면, 데이터베이스를 초기화하고 처음부터 다시 시작하는 것을 권장합니다. 더 고통스럽고 문제를 일으킬 가능성이 높은 방식으로 하려면, 가져오기 ID를 포함하고 있는 PostCustomField를 삭제하는 방법을 알아볼 수 있습니다. 모두 삭제하려면 PostCustomField.all.destroy_all을 사용할 수 있지만, 그렇게 할 거라면 차라리 쉬운 방법을 선택하는 것이 좋습니다.
‘데이터베이스를 초기화한다’고 하셨을 때, Discourse의 모든 주제와 게시글뿐 아니라 임포터(importer)를 통해 들어온 모든 수신 이메일 기록도 삭제하되, Discourse의 구조와 사용자 등은 그대로 유지하는 것을 의미하시나요? 아니면 기존 게시글은 유지하면서 임포터를 다시 실행할 수 있도록, 임포터로 가져온 이메일 데이터베이스만 삭제하는 것을 의미하시나요?
@pfaffman 님, 정말 감사합니다! 문제가 해결된 것 같지만, 정확히 어떤 일이 있었는지는 확신이 서지 않습니다.
./launcher enter app을 실행한 후 rails c를 입력했고, 그다음 PostCustomField.where(name: "import_id").destroy_all을 실행했습니다. 그러자 많은 텍스트가 출력되었고(일부는 빨간색과 초록색으로 표시됨), rails를 종료한 뒤 import_mbox.sh를 다시 실행하니 이전에 가져오다 제가 삭제(토픽을 제거하여)했던 원래 이메일들이 discourse에 다시 모두 나타났습니다. 예상대로, 이메일을 다른 카테고리 폴더로 복사하면 그것들도 중복으로 다시 가져와집니다.
이것은 discourse로 이전할지 여부를 결정하기 전에 사람들이 확인해 볼 수 있도록 몇 가지 추가 답변을 테스트용으로 올려둔 테스트 포럼일 뿐이므로, 초기화하고 다시 시작해도 큰 손해는 없었을 것입니다.
또한 데이터베이스를 초기화하고 모든 것을 다시 가져오는 방법에 대해서도 언급하셨습니다. 데이터베이스를 초기화하는 가장 쉬운 방법은 무엇인가요?