Stats of the Rivers

川の様子を見に行ってます。

activerecord-msgpack_serializer というのをつくった

ActiveRecordserialize という機能があります。 特定フィールドにオブジェクトをシリアライズして保存する機能で、デフォルトでは YAML が使われますが、 loaddump のクラスメソッドを持つクラスを指定することで、任意のフォーマットでシリアライズすることができます。

activerecord-msgpack_serializer は MessagePack を使った ActiveRecordシリアライズを行なう機能を提供するもので、以下の様に使います。

require "activerecord/message_pack_serializer"
class Post < ActiveRecord::Base
  serialize :meta_data, ActiveRecord::Serializers::MessagePackSerializer

  # ...
end

上記の例だと、 meta_data というフィールドについて、Array や Hash などのデータを出し入れすることができ、内部的には MessagePack で保存されるようになります。

実装 *1は結構シンプルなのですが、そこそこ使いでがあると思います。