Ruby $:unshift'..'

时间:2013-10-01 04:32:01

标签: 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,但它说

  

Errno :: ENOENT:没有这样的文件或目录 - symbols.txt

我包括错误的道路吗?

1 个答案:

答案 0 :(得分:0)

我认为你对$:的意思感到困惑。 $: is also known as $LOAD_PATH那就是:

  

loadrequire

加载脚本和二进制模块的路径

您还会在require文档中找到$:

  

如果filename未解析为绝对路径,则会在$LOAD_PATH$:)中列出的目录中搜索它。

所以$:require的搜索路径,它与普通文件操作没有任何关系。你不得不说:

@asset.get_symbols_from_file('../symbols.txt')

@asset.get_symbols_from_file('/some/absolute/path/to/symbols.txt')

或将搜索路径支持构建到get_symbols_from_file