$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

rubyでTypeError: singleton can't be dumped と言われたとき

 ちょっとはまったのでメモ。キャッシュなどを行なうときに、上のように言われることがあります。これはsingletonオブジェクトであるとか、特異メソッドがあるためのようなので、dupメソッドを使って浅いコピーをすることでdumpできるようにすることができます。

user = Twitter.user('shiba_yu36')
Rails.cache.write('user_cache', user.dup)