2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Docker for Windows] Sprockets のディレクトリ名がコンフリクトする場合 [Ruby on Rails]

Last updated at Posted at 2020-05-10

この記事で解決すること

Errno::EEXIST in Hoge#moge
File exists @ dir_s_mkdir - /Railsapp/tmp/cache/assets/sprockets/v4.0.0/**

このエラーを Windows 10 April 2018 Update 以降のWindowsにおいて解決する

原因

Sprockets の使っているキャッシュ用ディレクトリ名が大文字と小文字を区別しているが、WindowsのAPIはディレクトリの大文字と小文字を区別しない事でディレクトリ名がコンフリクトしていることが原因

解決

管理者権限でPowerShellを起動します。

PS C:\Development\Railsapp>  fsutil.exe file SetCaseSensitiveInfo .\tmp\cache\assets\sprockets\v4.0.0\

おわり。

個人開発や開発環境が全員Windowsで統一されているなどの環境であれば、下記で紹介しているSprocketsとDockerの設定を変える方法も有効だと思います。

複数人が参加しているプロジェクト開発などにおいては、標準(Unix環境)にWindows環境が合わせていく方がよりコード・設定の複雑さを減らし良い解決だと思っているので、上記の解決をしてみました。

関連・類似記事

今回の手法とは異なる手法で解決している記事があるので、そちらも参考になるかもしれません。

SprocketsのCache先を変更することで対応している
Issue

FileStore cache patch in v3.6 causes directory name collisions in Windows · Issue #283 · rails/sprockets

余談

Windows NTはいつまでMS-DOS時代のしがらみから抜けられないのだろうか・・・。
この記事がどなたかの役に立てば幸いです。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?