Nikolay
(Nikolay)
1
こんにちは、Windows 上では開発できません。空白の画面が表示されてしまいます。コンソールを開くと、以下のエラーが表示されます。
(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
これと類似のエラーが多数発生しています。
つまり、Discourse がスクリプトをロードできない状態です。スクリプトを別ウィンドウで開くと、以下のエラーが表示されます。
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')")
そこで調査を進めたところ、問題は Sprockets にあることに気づきました。Windows から Docker 内に Discourse のディレクトリをマウントしているため、ファイルシステムが大文字小文字を区別しません。Sprockets は、ext4 のような Linux 型のファイルシステム(大文字小文字を区別するディレクトリが作成できるもの)でのみ動作するようです。
この問題に対する解決策はありますか?
ありがとうございます
追記:この Sprockets の問題は GitHub でドキュメント化されています:FileStore cache patch in v3.6 causes directory name collisions in Windows · Issue #283 · rails/sprockets · GitHub
しかし、この issue はまだオープンで、解決策は見つかっていません 
sam
(Sam Saffron)
2
面白いことに、昨日 @pixeltrix がこれを見つけ、このハックを使って回避しました:
WSL2 をインストールして、当社の WSL2 設定を使用することを強くお勧めします。こちらの方がはるかに高速で、理解しやすいです:
開発環境のインストールは簡単です。WSL2 をセットアップし、Docker をインストールしてから、当社の Docker 開発設定を使用するだけです。
「いいね!」 4
Nikolay
(Nikolay)
3
どうもありがとうございます。ハックは機能しました。
後で WSL2 を使ってみます。
「いいね!」 1