Rubyのオブジェクトについて私たちが知っている唯一の情報が人間が読める形式である状況を想像してみてください。
#<User::Class::Element:0x2fef43 @field1 = 1, @field2 = two, @field3 = [1,2,3]>
タスクは、この表現を、この表現が指すクラスのオブジェクトに変換できるメソッドを作成することです(もちろん、すべての適切な名前空間、モジュール、クラス、およびメソッドにアクセスできます)。例えば:
obj = humanReadableFormat2Obj("#<User::Class::Element:0x2fef43 @field1 = 1, @field2 = \"two\", @field3 = [1,2,3]>")
puts obj.field1 #=> "1"
puts obj.field2 #=> "two"
p obj.field3 #=> [1, 2, 3]
puts obj.class.to_s #=> User::Class::Element
PSこのタスクは、いくつかの大規模なデータベースの同期の問題から発生します。あるデータベースから別のデータベースにバイナリ形式(数百MB)でオブジェクトを転送する代わりに、スクリプト(数KB)のみを転送し、別のデータベースで実行して適切なオブジェクトを作成できます。