Ruby$:取消移位'';

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

以下是我作业的目录结构。 Assign中有一个symbols.txt、src文件夹和一个测试文件夹

我在我的测试文件顶部写了这个。 $:.unshift'..'

我在测试中将symbols.txt作为参数传递,并在主类中调用该方法

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')