保存 YAML 数据

dump 方法提供了另一种方便的方式将 Ruby 对象转换为 YAML 格式。最简单的是,它会将你的 Ruby 数据转换为 YAML 格式并将其转储为字符串:

yaml_dump1.rb
  1. arr = ["fred", "bert", "mary"]
  2. yaml_arr = YAML.dump( arr ) # yaml_arr is now: "--- \n- fred\n- bert\n- mary\n"

更有用的是,dump 方法可以接收第二个参数,它是某种 IO 对象,通常是文件(file)。你可以打开文件并将数据转储给它…

yaml_dump2.rb
  1. f = File.open( 'friends.yml', 'w' )
  2. YAML.dump( ["fred", "bert", "mary"], f )
  3. f.close

…或者你可以打开文件(或其它类型的 IO 对象)并将其传递到关联的块中:

  1. File.open( 'morefriends.yml', 'w' ){ |friendsfile|
  2. YAML.dump( ["sally", "agnes", "john" ], friendsfile )
  3. }

如果使用块,则退出块时文件将自动关闭,否则应使用 close 方法显式关闭文件。顺便提一下,你也可以以类似的方式使用块来打开文件并读入 YAML 数据:

  1. File.open( 'morefriends.yml' ){ |f|
  2. $arr= YAML.load(f)
  3. }