YAML.load(file)返回false?

时间:2012-06-15 15:33:28

标签: ruby ruby-1.9.3

我有一个指向空.yml文件的文件对象。当我尝试使用YAML.load加载此文件时,我得到false而不是空哈希。这是预期的行为吗?

file.read按预期返回""

2 个答案:

答案 0 :(得分:5)

这可能是因为YAML.parse("")返回false。所以我认为这是预期的行为。

答案 1 :(得分:3)

您可以修改load_file功能,如下所示:

而不是

data_hash = YAML.load_file(yaml_file)

data_hash = YAML.load_file(yaml_file, {})

因此当向YAML函数提供空load_file文件时,它将返回一个空哈希(我的Ruby版本是Ruby 2.4.0p0)

实施例: 空文件:/Users/batman/config/config.yml

 irb:
    2.4.0 :001 > require 'yaml'
    => true 
    2.4.0 :006 > YAML.load_file("/Users/batman/config/config.yml",{})
    => {}