代码之家  ›  专栏  ›  技术社区  ›  Emjey

在目录外打开yaml文件

  •  0
  • Emjey  · 技术社区  · 7 年前

    我希望有一个通用的yml文件,其中的配置内置在主文件夹中的所有目录中。

    我有个文件夹叫 ROMauto 其中的一个目录名为 Mobile

    这个 test_data.yml 存储在 手机 目录,但在 罗马托 是的。

    我想访问这个 测试数据.yml 手机 文件夹。我也可以做同样的事 罗马托 因为它来自同一个目录。

    我该如何阅读 YAML 在它的目录之外?

    我试过了

    @datasource = YAML.load_file("test_data.yml")
    
    YAML::load(File.open('ROMauto/test_data.yml)'))
    
    fn = File.dirname(File.expand_path(FILE)) + '../../test_data.yml'
    YAML::load(File.open(fn))
    
    YAML::load_file(File.join(File.dirname(File.expand_path(__FILE__)), 'test_data.yml'))
    

    手机 文件夹,它仍然会抛出此错误,称为:

    No such file or directory @ rb_sysopen - test_data.yml (Errno::ENOENT)
    

    有没有办法从目录外调用和读取yaml?

    1 回复  |  直到 7 年前
        1
  •  1
  •   suyogb    7 年前
    file = File.expand_path("../../test_data.yml", __FILE__)
    YAML.load_file(file)
    

    应该为你工作。首先,它将解析当前文件的父文件,即“mobile/”,然后转到父文件,并附加test_data.yml。