Nikolay
(Nikolay)
Janeiro 23, 2020, 10:35am
1
Olá, não consigo desenvolver no Windows porque a tela fica em branco. Ao abrir o console, recebo os seguintes erros:
(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
E muitos erros semelhantes.
Basicamente, o Discourse não consegue carregar os scripts. Quando abro um script em uma janela separada, recebo o seguinte erro:
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')")
Então comecei a investigar e percebi que o problema está no Sprockets. Monte o diretório do Discourse do Windows para o Docker, e o sistema de arquivos é insensível a maiúsculas e minúsculas. O Sprockets parece funcionar apenas em sistemas de arquivos semelhantes ao Linux (como ext4), que podem tornar os diretórios sensíveis a maiúsculas e minúsculas.
Existe alguma solução para esse problema?
Obrigado
ATUALIZAÇÃO: esse problema com o Sprockets está documentado no GitHub: FileStore cache patch in v3.6 causes directory name collisions in Windows · Issue #283 · rails/sprockets · GitHub
mas a issue ainda está aberta e não há solução
sam
(Sam Saffron)
Janeiro 28, 2020, 6:36am
2
Engraçado que o @pixeltrix se deparou com isso ontem e usou essa solução alternativa para contornar o problema:
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.
Recomendo apenas instalar o WSL2 e usar nossa configuração do WSL2, que é muito mais rápida e fácil de entender:
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…
A instalação do ambiente de desenvolvimento é trivial: basta configurar o WSL2, instalar o Docker e, em seguida, usar nossa configuração de desenvolvimento com 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)
Janeiro 28, 2020, 10:10am
3
Muito obrigado. O hack funcionou.
Mais tarde, vou tentar usar o WSL2.