【问题标题】:Error Errno::EEXIST occurs when loading page in Rails app using WSL使用 WSL 在 Rails 应用程序中加载页面时出现错误 Errno::EEXIST
【发布时间】:2020-12-16 00:18:52
【问题描述】:
我正在使用带有 WSL 1 的 Windows 上的 Docker 运行 Rails 应用程序。
有时在清理 Docker 卷后,我会在重新启动应用程序后收到此错误。错误消息是“文件存在@dir_s_mkdir - /myapp/tmp/cache/assets/sprockets/v4.0.0/3A”。
【问题讨论】:
标签:
ruby-on-rails
docker
windows-subsystem-for-linux
sprockets
【解决方案1】:
发生这种情况是因为 sprockets(负责资产管道)无法成功写入缓存文件夹,在本例中为“tmp/cache/assets/sprockets/v4.0.0/3A”,因为另一个文件夹具有几乎相同的名称(“. .../3a") 已经存在(同名,只是小写)。
我已经经历过几次这种情况,虽然我不确定为什么突然对 wsl-control 下的目录应用不区分大小写,但我找到了解决该问题的解决方法 here。
只需以管理员身份启动 Windows Power Shell 终端,然后从应用根目录运行以下命令:
(Get-ChildItem -Recurse -Directory).FullName | ForEach-Object {fsutil.exe file setCaseSensitiveInfo $_ enable},你很高兴。