У меня есть этот файл practice.yml:YAML в Ruby. В чем разница между load и load_file?
foo: whatever
bar:
-
fruit: apple
name: steve
sport: baseball
- more
-
python: rocks
perl: papers
ruby: scissorses
Какая разница под капотом между #load и #load_file?
#load, кажется, делает эту магию и принимает строку:
pry(main)> YAML.load("'a'")
"a"
[11] pry(main)> YAML.load("a:1")
"a:1"
[12] pry(main)> YAML.load("-a")
"-a"
[13] pry(main)> YAML.load("[a]")
[
[0] "a"
]
[14] pry(main)> YAML.load("[a,bc]")
[
[0] "a",
[1] "bc"
]
В то время как load_file кажется просто взять файл с действительным YAML внутри:
irb(main):002:0> YAML.load_file("practice.yml")
=> {"foo"=>"whatever", "bar"=>[{"fruit"=>"apple", "name"=>"steve", "sport"=>"baseball"}, "more", {"python"=>"rocks", "perl"=>"papers", "ruby"=>"scissorses"}]}
Как вы узнали, что код load_file? – Jwan622
В этом случае, какая магия происходит в #load, поскольку она, похоже, обрабатывает строки и выводит хэши или массивы в зависимости от разметки строк. – Jwan622
Пример: (извините за форматирование) $ bundle show yaml ~/.rbenv/versions/2.2 .0/lib/ruby / gems/2.2.0/gems/safe_yaml-1.0.4 $ mate '!!' mate 'bundle show yaml' – Rob