Nikolay
(Nikolay)
Janvier 23, 2020, 10:35
1
Bonjour, je ne peux pas développer sous Windows car j’obtiens un écran blanc. Lorsque j’ouvre la console, je reçois ces erreurs :
(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
et beaucoup d’erreurs similaires.
En résumé, Discourse ne peut pas charger les scripts. Lorsque j’ouvre un script dans une fenêtre séparée, je reçois l’erreur suivante :
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')")
J’ai donc commencé à investiguer et j’ai réalisé que le problème vient de Sprockets. J’ai monté le répertoire Discourse depuis Windows vers Docker, et le système de fichiers ne fait pas la distinction entre majuscules et minuscules. Or, Sprockets semble ne fonctionner que sur des systèmes de fichiers de type Linux (comme ext4) qui peuvent rendre les répertoires sensibles à la casse.
Existe-t-il une solution à ce problème ?
Merci
MISE À JOUR : ce problème avec Sprockets est documenté sur GitHub : FileStore cache patch in v3.6 causes directory name collisions in Windows · Issue #283 · rails/sprockets · GitHub
mais le problème est toujours ouvert et aucune solution n’est proposée
sam
(Sam Saffron)
Janvier 28, 2020, 6:36
2
Amusant : @pixeltrix est tombé là-dessus hier et a utilisé cette astuce pour contourner le problème :
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.
Je recommande simplement d’installer WSL2 et d’utiliser notre configuration WSL2, qui est bien plus rapide et plus facile à comprendre :
This tutorial has been tested on Windows 10 and 11.
To set up a development environment for Discourse on Windows, you can do it using Windows Subsystem for Linux feature.
This setup requires the WSL 2 installation. It is only available in Windows 10 builds 18917 or higher. We’ll assume that you already installed Windows Subsystem for Linux 2 (Ubuntu) on your Windows 10 system. WARNING: Install Ubuntu 18.04, and not 20.04 since some installations will fail on 20.04. For m…
L’installation de l’environnement de développement est triviale : il suffit de lancer WSL2, d’installer Docker, puis d’utiliser notre configuration de développement Docker.
Developing using Docker
Since Discourse runs in Docker, you should be able to run Discourse directly from your source directory using a Discourse development container.
Pros: No need to install any system dependencies, no configuration needed at all for setting up a development environment quickly.
Cons: Will be slightly slower than the native dev environment on Ubuntu, and much slower than a native install on MacOS.
See also Developing Discourse using a Dev Container …
Nikolay
(Nikolay)
Janvier 28, 2020, 10:10
3
Merci beaucoup. Le contournement a fonctionné.
Plus tard, j’essaierai d’utiliser WSL2.