How do I parse a YAML file in Ruby? How do I parse a YAML file in Ruby? ruby ruby

How do I parse a YAML file in Ruby?


Maybe I'm missing something, but why try to parse the file? Why not just load the YAML and examine the object(s) that result?

If your sample YAML is in some.yml, then this:

require 'yaml'thing = YAML.load_file('some.yml')puts thing.inspect

gives me

{"javascripts"=>[{"fo_global"=>["lazyload-min", "holla-min"]}]}


I had the same problem but also wanted to get the content of the file (after the YAML front-matter).

This is the best solution I have found:

if (md = contents.match(/^(?<metadata>---\s*\n.*?\n?)^(---\s*$\n?)/m))  self.contents = md.post_match  self.metadata = YAML.load(md[:metadata])end

Source and discussion: https://practicingruby.com/articles/tricks-for-working-with-text-and-files


Here is the one liner i use, from terminal, to test the content of yml file(s):

$ ruby  -r yaml -r pp  -e 'pp YAML.load_file("/Users/za/project/application.yml")'{"logging"=>  {"path"=>"/var/logs/",   "file"=>"TacoCloud.log",   "level"=>    {"root"=>"WARN", "org"=>{"springframework"=>{"security"=>"DEBUG"}}}}}