MoniterMixinのちょっとしたバグ

久方振りにnadokaを使おうと思ったら,1.9.1で文字列の扱いが変わったおかげで,そのままではまったく動かないようになっていた.エラーが一個出るたびにencodeか,force_encodingで置き換えていく簡単な作業です・・・どう考えても修正箇所多すぎで死亡フラグだね.
それはそれでおいておくとして,作業中,MoniterMixinにちょっとしたバグがあることに気付いた.ArrayやHashに対するextendは問題ないのにTCPSocketにextendすると戻ってこない.ちょちょいと調べてみると,面白いコードを発見した.

  def self.extend_object(obj)
    super(obj)
    obj.send(:mon_initialize)
  end

sendってなんだよ.Object.send呼び出しているつもりなんだろうけど,TCPSocket.sendを呼んでブロックしちゃってるぽい?
Object.sendの項を見てみると,オーバーライドされている可能性があるからライブラリはsendじゃなくて__send__使えっていう注意書きがあった.書き換えると何事もなく戻ってくるように.