Acabo de hacer un ./launcher rebuild app — sin cambios en los archivos relacionados con el sistema. Ahora estoy atascado en los puntos parpadeantes de Discourse.
He comprobado lo siguiente:
docker ps muestra la imagen de la aplicación de Discourse (parece normal).
El comando top muestra actividad (parece normal).
Puedo ver el estado de Sidekiq (parece normal).
Así que, reconstruí la aplicación de nuevo.
Mismos resultados.
Intenté usar el modo seguro. Todo apagado. Sin cambios. Todavía recibo la pantalla de los puntos parpadeantes.
Revisé cada línea del código fuente. Muestro que tengo cuatro archivos JS que no están disponibles. Son:
Hay numerosos archivos JavaScript que faltan. Estos fueron los primeros encontrados.
Revisión inicial:
Los archivos no están disponibles a través de mi entrega CDN.
El CDN extrae de mi bucket S3.
Los archivos no están en mi bucket S3 donde se almacenan todos los demás activos.
Mirando los resultados de la reconstrucción, puedo ver lo siguiente.
Los 4 archivos se crearon y se escribieron en public/assets/ con una extensión de archivo .js.
Los 4 archivos se comprimieron y se guardaron con una extensión de archivo .br.js.
Comprobando mi servidor:
Los 4 archivos .js están disponibles en mi servidor.
Los archivos .br.js no están disponibles en mi servidor.
Los archivos .br.js no están en mi bucket S3.
Al revisar los resultados de la reconstrucción, parece que la actividad after_assets_precompile no se está realizando en mis reconstrucciones. Puedo ejecutar manualmente un rake s3:upload_assets y los activos se migran a S3 y todo funciona bien.
He comprobado lo siguiente:
Mi archivo yml pasa las comprobaciones de formato correcto.
¿Qué puedo comprobar para determinar por qué after_assets_precompile no se está procesando como parte de la reconstrucción?
Puedes encontrar esa tarea de rake allí y luego ejecutarla desde dentro del contenedor (para ahorrar tiempo de una reconstrucción). Y luego haz una reconstrucción una vez que edites tu archivo yml.
S3 ha estado funcionando en el sitio durante 43 días. Los comandos rake se colocaron allí como parte de la instalación de S3.
El sitio se ha reconstruido al menos 30 veces. He agregado complementos y componentes adicionales en el camino. Esto indicaría que se agregaron y poblaron archivos .js al bucket S3.
El componente S3 ha estado funcionando muy bien. Esta es la primera vez que tengo problemas con archivos que no se migran a S3.
¿Qué puedo investigar para entender por qué los archivos no se movieron?
¿Alguien sabe qué podría causar que after_assets_precompile no se ejecute?
La declaración echo nunca aparece en la salida de la reconstrucción.
El paso de reconstrucción procesa los pasos antes y después de esta sección en el archivo app.yml. Procesa todos los complementos y comandos personalizados.
He tomado los siguientes pasos para intentar resolverlo:
Eliminé todos los complementos
Deshabilité todos los componentes
Revisé todos los archivos de registro de discourse. No encontré ningún error indicado.
Revisé los archivos de registro del sistema base. No encontré ningún error indicado.
¿Alguien tiene una idea de por qué el proceso de reconstrucción omitiría esta sección?
Como prueba, moví los comandos after_assets_precompile a la sección de comandos personalizados.
run:
- exec: echo "Beginning of custom commands"
## If you want to set the 'From' email address for your first registration, uncomment and change:
## After getting the first signup email, re-comment the line. It only needs to run once.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
## command to password protect the website during work. remove for production.
- exec:
cd: $home
cmd:
- echo "Beginning of precompile commands"
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
- exec: echo "End of custom commands"
Los comandos funcionaron sin ningún problema. Esto descarta problemas de acceso ambiental o de seguridad.
El proceso del lanzador se está saltando el código after_assets_precompile durante la reconstrucción.
@supermathie - eres increíble con una vista increíble. Pudiste ver que el código no estaba con sangría de dos espacios. Y solo a partir de un solo fragmento en comparación con la sección más extensa. Gracias.
Agregué los dos espacios y eso resolvió el problema.
Anteriormente, había ejecutado app.yml a través de un verificador de yml. La herramienta de prueba me dijo que el archivo era estructuralmente sólido. No pudo decirme que era funcionalmente incorrecto.