active_decoratorとoctopusは相性が悪い
master-slaveの振り分けを行いたくてoctopusを導入した。
正直octopusはやりたいことに比べてtoo much感がプンプンしているんだけど、他のgemは導入に手間取ったのでoctopusにした。
そしたら、あるとき
undefined method to_a' for classOctopus::RelationProxy'
というエラーがでるか所がいくつかあることに気づいた。
調べてみると、どうもactive_decoratorが絡んでいるもよう。細部を見ると以下のコードが原因っぽい。
https://github.com/amatsuda/active_decorator/blob/master/lib/active_decorator/decorator.rb#L26
ただ、詳細まで追ってないので確信はないけど、これはどちらかというとoctopusがactiverecordをうまくラップできてないせいなんじゃないかと思う。
とはいえ、octopus以外の選択肢が取りづらい状況ではあったのでdraperに移行した。
draperはdecorateしたいタイミングで明示的にdecorateするので上記のようなことは起きない。ちょっとめんどくさいけど。
というだけのお話。。。