En primer lugar, gracias a los desarrolladores por crear una aplicación tan excelente.
Espero poder aclarar algo que me tiene confundido. Tenía la impresión de que la forma correcta de usar los comandos $ rake db:* en Rails 6 para la inicialización era mediante $ rake db:prepare, pero Discourse no se inicializa correctamente si ejecuto $ rake db:prepare por sí solo. Y, según las discusiones en Meta/aquí, veo que prepare solo parece utilizarse para inicializar datos de prueba y quizás en alguna tarea en segundo plano que se ejecute.
¿Podría alguien ayudarme a entender si $ rake db:migrate es el único comando necesario para inicializar la base de datos de Discourse para migraciones o inicializaciones de la base de datos, y por qué es así?
Creo que el proceso de compilación debe establecer por defecto la ejecución de db:create, ya que, a menos que esté pasando por alto alguna funcionalidad en mi instancia, esta parece funcionar solo con la precompilación de activos (o algo similar) y la migración.
Después de investigar un poco, parece que esto ofrece más información sobre la respuesta que buscaba:
Las tareas de rake de Discourse están sobrescribiendo rails db:migrate. Creo que esto puede considerarse poco ortodoxo en las aplicaciones de Rails, por ejemplo, en este PR: Add db:prepare rake task. by robertomiranda · Pull Request #35768 · rails/rails · GitHub. Al examinar lo que hace db:prepare, accede directamente a ActiveRecord y realiza la configuración de la base de datos esperada, pero no llama a las otras tareas individuales db:* necesarias que uno podría esperar, ya que sobrescribe partes que se espera que provengan de la versión original.
Y como nota al margen: la forma en que tengo configurado Discourse actualmente no permite que el usuario de la base de datos de Discourse tenga privilegios elevados, por lo que tener que ejecutar cosas como db:drop y db:create después de la compilación parecerá requerir un pequeño cambio en la configuración respecto a lo que implementé.