Ruby on rails Ruby FileUtils.mkpath在不同的环境中表现不同

Ruby on rails Ruby FileUtils.mkpath在不同的环境中表现不同,ruby-on-rails,ruby,filesystems,Ruby On Rails,Ruby,Filesystems,我有一个rails应用程序,其中包含一段简单的代码,可以在不存在目录的情况下创建目录 FileUtils.mkpath(self.webapp_dir) unless File.exists?(self.webapp_dir) 这在我的开发工作站(OS X 10.9)上的表现与预期一样,但在部署到其他环境(Red Hat 4.4.6-3)时会出现错误 在rails控制台中,我运行了以下操作: FileUtils.mkpath('/path/to/my/project/public/web_ap

我有一个rails应用程序,其中包含一段简单的代码,可以在不存在目录的情况下创建目录

FileUtils.mkpath(self.webapp_dir) unless File.exists?(self.webapp_dir)
这在我的开发工作站(OS X 10.9)上的表现与预期一样,但在部署到其他环境(Red Hat 4.4.6-3)时会出现错误

在rails控制台中,我运行了以下操作:

FileUtils.mkpath('/path/to/my/project/public/web_apps/1')
请注意,在第一次运行时,“public/web_apps/”存在,但“1”不存在。这是成功的。我可以在整个路径已经存在的情况下再次运行它,并且每次都会成功

现在,我尝试在生产环境中的rails控制台中运行相同的代码。同样,“public/web_apps/”已存在,但“1”不存在。在这种情况下,我得到一个错误

FileUtils.mkpath('/path/to/my/project/public/web_apps/1')
--> Errno::EEXIST: File exists - /path/to/my/project/public/web_apps
有人知道为什么这两台机器的行为不同吗?我能做些什么?我想我可以遍历并检查路径中的每个目录,只有当它不存在时才创建它,但这正是我所期望的mkpath所做的


我发现了与文件系统交互的其他函数之间的其他差异(例如file.size在文件写入后不会立即报告正确的值,除非先打开它)。不过,在任何文档或其他SO帖子中,我都找不到任何关于这些行为差异的提及,我似乎一直在磕磕绊绊地发现它们,这让我有点沮丧。这是已知的吗?其他应用程序如何解释这一点?

这似乎是一个权限问题,如果目录不存在,则会创建目录,否则不会出现任何错误


看看
'/path/to/my/project/public/web_apps/'的所有者

这实际上都是由于一个断开的sym链接=()

因此,web_应用程序实际上是指向服务器上不存在的共享目录的sym链接。在我的开发机器上,它确实存在。由于“文件存在”错误,这一点并不明显


我们的部署脚本在构建sym链接时没有首先检查该目录是否确实存在。呸。

两个框中的Ruby版本和补丁号是否完全相同?Ruby的哪个版本?