Ruby で YAML
Ruby で YAML を使うには require 'yaml' としてからコードを書いていけば良いようです。Perl では use YAML、などですね。Ruby では 外部ライブラリの読み込みは require を使うようです。
準備のためにワインを表現した Wine クラスのファイルを wine.rb という名前で作りました。
class Wine attr_accessor :name, :year, :country def initialize(name, year, country) @name = name @year = year @country = country end end
yaml と wine を require して、Wine オブジェクトを実行してみます。
#!/usr/local/bin/ruby require 'yaml' require 'wine' wine = Wine.new('Ernest & Julio Gallo', 2003, 'Sonoma Coast, California') puts wine.to_yaml
とすると
--- !ruby/object:Wine country: Sonoma Coast, California name: Ernest & Julio Gallo year: 2003
このシリアライズしたものをファイルに保存してみます。ファイル書き出しは File.open + block でやってみます。
wine = Wine.new('Ernest & Julio Gallo', 2003, 'Sonoma Coast, California') File.open('wine.yaml', 'w') do |file| file.puts(wine.to_yaml) end
たしかに同じディレクトリに wine.yaml ができあがり、出力が書き込まれました。この書き出したものを読んでデシリアライズしてみたいと思います。
まとめてファイルを読み出すのには File.read を使います。ruby 1.8 から使えるそうです。
#!/usr/local/bin/ruby require 'yaml' require 'wine' wine = YAML::load(File.read('wine.yaml')) puts wine.name
実行してみます。
$ ruby load_wine.rb Ernest & Julio Gallo
ぱちぱち。