Problema con el desarrollo en Windows con Docker y volumen montado

Hola, no puedo desarrollar en Windows porque obtengo una pantalla en blanco. Cuando abro la consola, obtengo estos errores:

(X) ember_jquery.js?1579775136.5740232:1 Uncaught Error: Errno::EEXIST: File exists @ dir_s_mkdir - /var/discourse/tmp/cache/assets/sprockets/v3.0/pr
  (in /home/gaijinsailor/.rbenv/versions/2.6.2/lib/ruby/2.6.0/fileutils.rb:239:in `mkdir')
    at ember_jquery.js?1579775136.5740232:1

y muchos errores similares.

Básicamente, Discourse no puede cargar los scripts. Cuando abro un script en una ventana separada, obtengo el siguiente error:

Script: http://localhost:3000/assets/locales/en_US.js?1579775136.5398135
Body: throw Error("Errno::EEXIST: File exists @ dir_s_mkdir - /var/discourse/tmp/cache/assets/sprockets/v3.0/x2\n  (in /home/gaijinsailor/.rbenv/versions/2.6.2/lib/ruby/2.6.0/fileutils.rb:239:in `mkdir')")

Así que empecé a investigar y me di cuenta de que el problema está con Sprockets. Monté el directorio de Discourse desde Windows en Docker y el sistema de archivos no distingue entre mayúsculas y minúsculas. Parece que Sprockets solo funciona en sistemas de archivos tipo Linux (como ext4) que pueden hacer que los directorios sean sensibles a las mayúsculas y minúsculas.

¿Existe alguna solución para este problema?
Gracias

ACTUALIZACIÓN: Este problema con Sprockets está documentado en GitHub: FileStore cache patch in v3.6 causes directory name collisions in Windows · Issue #283 · rails/sprockets · GitHub
pero el problema sigue abierto y no hay solución :frowning:

Es gracioso que @pixeltrix se topara con esto ayer y usara este truco para solucionarlo:

Recomiendo simplemente instalar WSL2 y usar nuestra configuración de WSL2, que es mucho más rápida y fácil de entender:

La instalación del entorno de desarrollo es trivial; solo necesitas poner en marcha WSL2, instalar Docker y luego usar nuestra configuración de desarrollo con Docker.

4 Me gusta

Muchas gracias. El truco funcionó.
Más tarde probaré a usar WSL2.

1 me gusta