Ruby - 基本的な文法 - Marshal ダンプとロード

 クラウディア
1. 概要
2. オブジェクトのダンプとロード

1. 概要

 オブジェクト指向型の言語というと、バイナリファイルの読み書きをどうするんだろうという悩みがあるのですが・・・。  オブジェクトそのものをダンプする仕組みが用意されたりしています。  ruby では Marshal ?  C# の Serialization ってなものと同じようなもの(全然間違いかもしれません)と理解しています。  本項は、下記のサイトを参考にさせていただきました。
module Marshal (Ruby 2.5.0)」
「Marshalでオブジェクトを冷凍保存 - rubyco(るびこ)の日記

2. オブジェクトのダンプとロード

 あくまで一例として
require 'pathname'

hash1 = { :foo => 'bar', :hoge => 'fuga' }
hash2 = Hash.new

filename = '/tmp/sample01.dmp'

Pathname.new(filename).open('wb') do | file |
  Marshal.dump(hash1, file)
end

Pathname.new(filename).open('rb') do | file |
  hash2 = Marshal.load(file)
end

puts("[#{sprintf("%3d", __LINE__)}] hash2=[#{hash2}] ")

 というソースを書いて、実行すると下記の結果が得られます。
[ 16] hash2=[{:foo=>"bar", :hoge=>"fuga"}]