假设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“生活”在其父目录中一样?我觉得我只回答了自己的问题,但想确保我理解这一点。
答案 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__))