

Rubyで一時的に変数の中身をファイルに書き出す良い方法を教えてください。  
扱うのはハッシュか配列で、今まではJSONで書き出して、必要な時にパースして読み込んでいたのですが、容量が大きくなるに連れてパースにとんでもない時間がかかるようになりました。

JSONよりももっと低レベルの扱いで高速に書き出して読み込む方法はありますか?


CC BY-SA 3.0
2017-05-16T12:23:58.700
34755
2017-08-03T07:17:03.923
9149
question
ruby
Rubyで変数の中身をファイルに書き出したい


[MessagePack](http://msgpack.org) を使って、オブジェクトごとシリアライズ・デシリアイズしてみてはいかがでしょうか？
使い方は [GitHub](https://github.com/msgpack/msgpack-ruby#serializing-objects)
にありますが、基本的には（事前に `gem install msgpack` して）以下のような感じです：

[code]

    require 'msgpack'
    obj = 'Hello'
    packed = obj.to_msgpack # さらにファイルに書き出すなど
    unpacked = MessagePack.unpack(packed)
    
[/code]


CC BY-SA 3.0
2017-05-16T22:37:06.667
34765
2017-05-16T22:37:06.667
8625
34755
answer


PStoreなんかどうでしょうか。

[code]

    require 'pstore'
    db = PStore.new("/tmp/foo")
    db.transaction do
      p db.roots       # => []
      ary = db["root"] = [1,2,3,4]
      ary[0] = [1,1.5]
    end
    
    db.transaction do
      p db["root"]     # => [[1, 1.5], 2, 3, 4]
    end
    
[/code]

<https://docs.ruby-lang.org/ja/latest/class/PStore.html>


CC BY-SA 3.0
2017-05-17T06:43:05.460
34772
2017-05-17T06:43:05.460
14540
34755
answer