Hatena::Groupsubtech

#生存戦略 、それは

-> 12 { 01 / 17 }

Ruby で解りにくい例外の発生元を調べる

18:23 | はてなブックマーク - Ruby で解りにくい例外の発生元を調べる - #生存戦略 、それは

例えばインテグレーションテストで

     Failure/Error: 
       expected there to be content Internal Server Error undefined method `name' for #<Hash:0x11b7d7578> WEBrick/1.3.1 (Ruby/1.8.7/2011-12-28) at 127.0.0.1:62045"
     # ./spec/integration/foo_spec.rb:174

みたいな例外が起きたとき、ぱっと見どこから呼び出させるのか解らなくて生きるのが辛い。name ぐらい汎用的な名前だと grep で引っかからないし。そんなときは

class Hash
  def name
    require 'pp'; pp caller.to_a
  end
end

みたいにオーバーライドしてメソッド定義しちゃうとあら簡単に解ります!特にこの場合なら spec/integration/foo_spec.rb の該当行らへんにかけば影響範囲も単体テストなら少なく探しやすい!

なんか泥沼っぽいですけど知っておくと便利!!同僚に教えて貰った。

トラックバック - http://subtech.g.hatena.ne.jp/secondlife/20120117