如何检查子链接文件存在

时间:2014-03-12 07:11:09

标签: ruby-on-rails ruby file

我在rails projet之外保存了一个文件,并在rails项目中创建了该文件的子链接,但是当我尝试检查File.exists(sublink_file_path)时,它返回false。

例如:

 file_path = "shared/test.xls" #original file outside rails project.
 ln -nfs shared/test.xls current/tmp/test.xls #created a sublink in rails tmp folder. here current is my project folder.

现在在控制器中提取文件路径

file_path = Rails.root + "tmp/test.xls"
File.exists?(file_path) #it return false but it should return true.

还检查File.exist?(file_path)也返回false。

如何检查ruby中是否存在子链接文件?

我的目录结构:

 Work
   Project
     app
     config
     db
     tmp
     and so on...
  Shared

这里项目并在工作文件夹内的同一级别共享。我确信我已经纠正了文件路径和目录结构。我担心的是我们无法将子链接路径检查为文件。

File.exist?(file_path)它将返回true,因为文件路径是实际的文件路径。

File.exist?(sublink_file_path)我认为子链接文件路径不是它返回错误的文件

2 个答案:

答案 0 :(得分:1)

这不是File.exists?的问题,你只是创建了一个错误的符号链接(错误的链接路径)。

使用绝对路径:

ln -nfs `pwd`/shared/test.xls current/tmp/test.xls

或使用相对路径:

ln -nfs ../../shared/test.xls current/tmp/test.xls

然后再试一次。

答案 1 :(得分:0)

我必须在我的情况下设置绝对路径它不使用相对路径。我用过:

ln -nsf /home/work/shared/test.xls /home/work/current/tmp/test.xls

检查符号链接是否正确创建。使用以下命令

file "your_symbolic_link_path"

现在工作正常。