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...
2010-10-27
SaSS (scss) ですべての css を打ち消す以前ちょさんが JS でやってたのの SaSS 版。ちょさんの JS コードからコピペです。http://gist.github.com/649098これを @import して、scss で.example { @inc...
SaSS (scss) ですべての css を打ち消す以前ちょさんが JS でやってたのの SaSS 版。ちょさんの JS コードからコピペ...