QA@IT

pry-debuggerで特定のメソッドにstepしたい

2078 PV

現在、Rails3.2とpry、pry-debuggerというブレークポイントに相当するgemを使って開発をしているのですが、特定のメソッドにstepするにはどうしたらいいかわからず、困っています。

具体的に現在の状況を例に説明させていただきます。

現在、railsのコントローラクラスに対してspecを使ってテストをしています。
しかし、下記のテストが失敗していました。

get :index,:user_id => 1

blogsize_calendar = assigns(:blogsize_calendar)
blogsize_calendar[2011][5].should eq(2)

そこで原因を探るために、以下のように修正しました。

binding.pry
get :index,:user_id => 1

blogsize_calendar = assigns(:blogsize_calendar)
blogsize_calendar[2011][5].should eq(2)

ここで自分が処理を確認したいのは、get :indexで実行されているControllerクラスです。
そこでstepコマンドをget :index,:user_id => 1にたいして、実行しました。

しかしその結果、action_controller/test_case.rbの実装に飛んでしまいました。
これはおそらく、RspecかRailsの実装だと思われます。さらにそれに対してstepを実行するとさらに別のクラス、別のクラスと、どんどん奥に入ってしまい、最後には自分が今どこにいるのかわからなくなってしまいました。

このような場合、どうすれば自分が目的とするControllerクラスにいけますか?
ご回答いただけると幸いです。

ちなみに自分が試した方法としては
Controllerクラスに直接binding.pryを書きました。
しかし自分はrake specコマンドでテストを行っているため、ほかのメソッドの時にもこれが反応してしまい、もっといい方法があればと考えました。

回答

rake spec ではなく、以下のように rspec コマンドで実行するテストのファイルと行番号を指定してはどうでしょうか。rspec --help で rspec コマンドの説明を読むことができます。

rspec -l90 path/to/spec-file.rb
編集 履歴 (0)
  • お返事ありがとうございます。そのようなコマンドがあったのですね、勉強になりました。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。