使用 WSL 在 Rails 应用中加载页面时发生错误 Errno::EEXIST
Error Errno::EEXIST occurs when loading page in Rails app using WSL
我是 运行 一个 Rails 应用程序,在 Windows 上使用 Docker 和 WSL 1。
有时在 Docker 个卷中清理后,我会在重新启动应用程序后收到此错误。错误消息是“文件存在@ dir_s_mkdir - /myapp/tmp/cache/assets/sprockets/v4.0.0/3A”。
发生这种情况是因为链轮(负责资产管道)无法成功写入缓存文件夹,在本例中为“tmp/cache/assets/sprockets/v4.0.0/3A”,因为另一个文件夹名称几乎相同(“... ./3a") 已经存在(同名,只是小写)。
我遇到过几次这种情况,虽然我不确定为什么 wsl-control 下的目录突然不区分大小写,但我找到了解决方法 问题。
只需以管理员身份启动 Windows Power Shell 终端,然后从应用根目录 运行 此命令:
(Get-ChildItem -Recurse -Directory).FullName | ForEach-Object {fsutil.exe file setCaseSensitiveInfo $_ enable}
一切顺利。
我是 运行 一个 Rails 应用程序,在 Windows 上使用 Docker 和 WSL 1。
有时在 Docker 个卷中清理后,我会在重新启动应用程序后收到此错误。错误消息是“文件存在@ dir_s_mkdir - /myapp/tmp/cache/assets/sprockets/v4.0.0/3A”。
发生这种情况是因为链轮(负责资产管道)无法成功写入缓存文件夹,在本例中为“tmp/cache/assets/sprockets/v4.0.0/3A”,因为另一个文件夹名称几乎相同(“... ./3a") 已经存在(同名,只是小写)。
我遇到过几次这种情况,虽然我不确定为什么 wsl-control 下的目录突然不区分大小写,但我找到了解决方法
只需以管理员身份启动 Windows Power Shell 终端,然后从应用根目录 运行 此命令:
(Get-ChildItem -Recurse -Directory).FullName | ForEach-Object {fsutil.exe file setCaseSensitiveInfo $_ enable}
一切顺利。