ネストされたハッシュ、配列、文字列などを含む、巨大なハッシュである大きなオブジェクトを格納しています。これには非常に似た質問がありますhere。これにより、次のサルパッチが得られます。
class Hash
def to_utf8
Hash[
self.collect do |k, v|
if (v.respond_to?(:to_utf8))
[ k, v.to_utf8 ]
elsif (v.respond_to?(:encoding))
[ k, v.dup.encode('UTF-8') ]
else
[ k, v ]
end
end
]
end
end
この答えは素晴らしかったですが、1レベル以上の深さには達していないようで、リファクタリングしてスパイダースルーする方法がわかりません。