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:
Este tutorial foi testado no Windows 10 e 11.
Para configurar um ambiente de desenvolvimento para o Discourse no Windows, você pode fazê-lo usando o recurso Windows Subsystem for Linux .
Esta configuração requer a instalação do WSL 2. Está disponível apenas em builds do Windows 10 18917 ou superiores. Vamos assumir que você já instalou o Windows Subsystem for Linux 2 (Ubuntu) em seu sistema Windows 10. AVISO: Instale o Ubuntu 18.04 e não o 20.04, pois algumas instalações …
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.
Desenvolvendo com Docker
Como o Discourse roda em Docker, você deve ser capaz de executar o Discourse diretamente do seu diretório de origem usando um contêiner de desenvolvimento do Discourse.
Vantagens: Não é necessário instalar nenhuma dependência do sistema, nenhuma configuração é necessária para configurar rapidamente um ambiente de desenvolvimento.
Desvantagens: Será ligeiramente mais lento que o ambiente de desenvolvimento nativo no Ubuntu e muito mais lento que…
Nikolay
(Nikolay)
Janeiro 28, 2020, 10:10am
3
Muito obrigado. O hack funcionou.
Mais tarde, vou tentar usar o WSL2.