文件内部的相对路径:`../` - >父目录vs`。/` - >文件本身?

时间:2013-12-02 05:00:38

标签: ruby file

假设file_a和file_b存在于同一目录中,而file_a包含require file_b的require语句。这样做的方式似乎如此:

require File.expand_path('../file_b', __FILE__)

但有点期待它看起来像这样:

require File.expand_path('./file_a', __FILE__)

我玩过它,果然,./版本不起作用而../版本不起作用。 ./版本会返回path/to/file_a/file_b之类的路径。 file_a中的代码是否存在于该文件中的概念,就像file_a“生活”在其父目录中一样?我觉得我只回答了自己的问题,但想确保我理解这一点。

1 个答案:

答案 0 :(得分:1)

  

File.expand_path(file_name [,dir_string]) - > abs_file_name

     

将路径名转换为绝对路径名。除非给出dir_string,否则从进程的当前工作目录引用相对路径,在这种情况下,它将用作起点。

File.expand_path将第二个(可选)参数视为dir_string,它不关心它是否实际上是一个目录。因此,确保传入的第二个参数是目录的路径是你的工作。

如果要保留./file_a部分,可以更改传入的第二个参数:

require File.expand_path('./file_a', File.dirname(__FILE__))