Ruby$:取消移位'';
以下是我作业的目录结构。 Assign中有一个symbols.txt、src文件夹和一个测试文件夹 我在我的测试文件顶部写了这个。 $:.unshift'..' 我在测试中将symbols.txt作为参数传递,并在主类中调用该方法Ruby$:取消移位'';,ruby,file-io,Ruby,File Io,以下是我作业的目录结构。 Assign中有一个symbols.txt、src文件夹和一个测试文件夹 我在我的测试文件顶部写了这个。 $:.unshift'..' 我在测试中将symbols.txt作为参数传递,并在主类中调用该方法 def test_get_symbols_from_file assert(@asset.get_symbols_from_file('symbols.txt')) end 虽然我要求移动到上一个目录,并从这个测试类中查找symbols.txt,但它说 Er
def test_get_symbols_from_file
assert(@asset.get_symbols_from_file('symbols.txt'))
end
虽然我要求移动到上一个目录,并从这个测试类中查找symbols.txt,但它说
Errno::enoint:没有这样的文件或目录-symbols.txt
我是否包括了错误的路径?我想你对
$:
的意思感到困惑。这就是:
通过Load
或require
加载脚本和二进制模块的路径
您还会发现文档中提到的$:
:
如果文件名
未解析为绝对路径,则将在$LOAD\u path
中列出的目录中搜索该文件名($:
)
所以$:
是require
的搜索路径,它与正常的文件操作无关。你必须说:
@asset.get_symbols_from_file('../symbols.txt')
或
或者将搜索路径支持构建到
get_symbols\u from_file
中,但不使用../当我通过cmd运行rake时,测试通过,但在编辑器“sublimate2”中失败;当我放置“../”时,测试通过sublimate,当我运行rake时,测试失败。有什么问题?问题是,您假设当前目录的某些情况并不总是正确的,使用绝对路径而不是相对路径可以解决该问题。
@asset.get_symbols_from_file('/some/absolute/path/to/symbols.txt')