조금 헷갈리는 부분이 있어서 확인을 요청드립니다. 제 생각에는 Rails 6에서 초기화를 위해 $ rake db:* 명령을 사용하는 올바른 방법은 $ rake db:prepare를 실행하는 것이라고 알고 있었습니다. 하지만 $ rake db:prepare만 단독으로 실행하면 Discourse가 제대로 초기화되지 않습니다. 그리고 Meta/여기에서의 논의들을 살펴보니, prepare는 테스트 데이터 초기화에 사용되거나 백그라운드에서 실행되는 작업 중 어딘가에서 사용되는 것으로 보입니다.
Discourse 데이터베이스의 마이그레이션 또는 초기화를 위해 $ rake db:migrate가 제가 실행해야 하는 유일한 명령인지, 그리고 왜 그런지에 대해 이해할 수 있도록 도와주시겠습니까?
Discourse의 rake 태스크가 rails db:migrate를 오버라이드하고 있습니다. 이는 Rails 앱에서 비정통적인 접근 방식으로 간주될 수 있으며, 예를 들어 이 PR: Add db:prepare rake task. - Pull Request #35768 - rails/rails - GitHub 을 참고할 수 있습니다. db:prepare가 무엇을 하는지 살펴보면, 이는 ActiveRecord에 직접 접근하여 예상된 DB 설정을 수행하지만, 상위(upstream)에서 기대하는 일부 부분을 오버라이드하기 때문에 일반적으로 기대할 수 있는 다른 개별 db:* 태스크를 호출하지 않습니다.
부연 설명으로, 현재 제가 Discourse를 설정한 방식에서는 discourse DB 사용자에게 권한 상승이 허용되지 않으므로, 빌드 이후 db:drop 및 db:create와 같은 작업을 수행하려면 제가 구현한 설정에서 약간의 변경이 필요할 것으로 보입니다.