A Day in the Life

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

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

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

Failure/Error: 
       expected there to be content Internal Server Error undefined method `name' for # 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 の該当行らへんにかけば影響範囲も単体テストなら少なく探しやすい!

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

記事の一覧 >

関連するかもエントリー

watchr - ファイルに変更があったら何かする / もしくはオサーンについて
みなさま、いかがお過ごしでしょうか。以前人のことをオサーンオサーン云いまくっていたけどその当時のオサーン年齢のもうすぐ三十路になります secondlife ですこんばんわ。言葉のしっぺ返しが痛い今日この頃です。さて、若かりし頃には合わなかったけど今使ってみるとしっくり来る物もあ...
みなさま、いかがお過ごしでしょうか。以前人のことをオサーンオサーン云いまくっていたけどその当時のオサーン年齢のもうすぐ三十路になります se...
Ruby を 1.9.3 p327 から 2.0.0 dev に上げたら Rails の起動時間が2.5倍速、rake spec の速度が1.8倍速になった
Ruby を 1.9.3 p327 から 2.0.0 dev に上げたら Rails の起動時間が2.5倍速、rake spec の速度が1.8倍速になった流しのフェローが Ruby 2.0.0 速いって言ってたので、いやいや速いっていっても〜、と思って社内の Ruby 1.9....
Ruby を 1.9.3 p327 から 2.0.0 dev に上げたら Rails の起動時間が2.5倍速、rake spec の速度が1...
大江戸Ruby会議01 高速なテストサイクルを回すには
本日大江戸清澄白河で行われた大江戸Ruby会議01で、高速なテストサイクルを回すにはという内容で発表してきました。大江戸Ruby会議01 高速なテストサイクルを回すにはView more presentations from hotchpotchテストを速くするには二パターンあり...
本日大江戸清澄白河で行われた大江戸Ruby会議01で、高速なテストサイクルを回すにはという内容で発表してきました。大江戸Ruby会議01 高...