我想知道如何解析包含以下内容的yaml文件:
---
javascripts:
- fo_global:
- lazyload-min
- holla-min
目前我正试图以这种方式解析它:
@custom_asset_packages_yml = (File.exists?("#{RAILS_ROOT}/config/asset_packages.yml") ? YAML.load_file("#{RAILS_ROOT}/config/asset_packages.yml") : nil)
if !@custom_asset_packages_yml.nil?
@custom_asset_packages_yml['javascripts'].each{ |js|
js['fo_global'].each{ |script|
script
}
}
end
但它似乎不起作用,给了我一个错误,值为零。
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
如果我尝试这样做,它会输出整个字符串(fo_globallazyload-minholla-min):
if !@custom_asset_packages_yml.nil?
@custom_asset_packages_yml['javascripts'].each{ |js|
js['fo_global']
}
end
3条答案
按热度按时间ca1c2owp1#
我也有同样的问题,但我也想得到文件的内容(在yaml前端事件之后)。
这是我找到的最好的解决方案:
资料来源和讨论:https://practicingruby.com/articles/tricks-for-working-with-text-and-files
vecaoik12#
下面是我从terminal用来测试yml文件内容的一个命令行:
8ulbf1ek3#
也许我遗漏了什么,但是为什么要尝试解析文件呢?为什么不加载yaml并检查生成结果的对象?
如果您的样品yaml在
some.yml
,那么这个:给我