Nikolay
(Nikolay)
23 Enero, 2020 10:35
1
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
sam
(Sam Saffron)
28 Enero, 2020 06:36
2
Es gracioso que @pixeltrix se topara con esto ayer y usara este truco para solucionarlo:
committed 12:09PM - 27 Jan 20 UTC
Sprockets 3.0 and later uses Base64 digests for cache paths and these
present pr… oblems when used with NTFS on Windows which is case-insensitive.
By allowing the overriding of the cache path from an environment variable
we can use a Docker volume to cache the asset compilation. This is actually
faster on both Mac and Windows than the default path.
Recomiendo simplemente instalar WSL2 y usar nuestra configuración de WSL2, que es mucho más rápida y fácil de entender:
Este tutorial ha sido probado en Windows 10 y 11.
Para configurar un entorno de desarrollo para Discourse en Windows, puedes hacerlo utilizando la función Windows Subsystem for Linux .
Esta configuración requiere la instalación de WSL 2. Solo está disponible en versiones de Windows 10 18917 o superiores. Asumiremos que ya has instalado Windows Subsystem for Linux 2 (Ubuntu) en tu sistema Windows 10. ADVERTENCIA: Instala Ubuntu 18.04, y no 20.04, ya que algunas instalacion…
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.
Desarrollando con Docker
Dado que Discourse se ejecuta en Docker, deberías poder ejecutar Discourse directamente desde tu directorio de origen usando un contenedor de desarrollo de Discourse.
Ventajas: No es necesario instalar ninguna dependencia del sistema, no se requiere ninguna configuración para configurar rápidamente un entorno de desarrollo.
Desventajas: Será ligeramente más lento que el entorno de desarrollo nativo en Ubuntu, y mucho más lento que una instalaci…
Nikolay
(Nikolay)
28 Enero, 2020 10:10
3
Muchas gracias. El truco funcionó.
Más tarde probaré a usar WSL2.