- 公開日
pry-byebug を使ってRailsアプリをステップ実行する
Railsアプリケーションのデバッグはどのように行っていますか? 愚直にプリントデバッグ? でも複雑なロジック内だと「このロジックのこの処理のここでピンポイントで止めたい!」という場合もありますよね。
そんなときに便利なのがpry-byebug. Githubのリンクは下記。
https://github.com/deivid-rodriguez/pry-byebug
pry-byebugを使えばピンポイントで処理を止めてステップ実行が可能になります。
Requirement
- Ruby2以上
pry-byebugで使われているByebugはRuby2前提のデバッガーなので2以上が必要になってきます。
導入
下記をGemfileに追加してbundle install
.
gem 'pry-byebug', group: :development
ユースケース
例えばこんなコントローラーのロジックがあったとする。
resultの中身を見たい場合はこうすればよい。
するとbinding.pry
を通る処理をした際に、下記のように表示されます。
From: app/controllers/posts_controller.rb @ line 31 PostsController#create:
26: def create
27: @post = Post.new(post_params)
28: result = @post.complicated_logic
29: binding.pry
30: # ... long logic ...
=> 31: respond_to do |format|
[1] pry(#<PostsController>)>
この状態で下記のように変数をみたりできます。
[1] pry(#<PostsController>)> result
=> true
[2] pry(#<PostsController>)> post_params
=> {"title"=>"a", "category"=>"b", "content"=>"c"}
その他のコマンド
ステップ実行に使えるコマンドは下記4つ。
step
next
finish
continue
次の行を実行したければstep
、Pryセッションから抜けたい場合はcontinue
を打てばよい。
コマンドエイリアス
それぞれのコマンドをいちいち打つのがダルいので、プロジェクトルートに.pryrc
を置きに下記のように書くとエイリアスを設定できるようだ。
本エントリで紹介したpry-byebugなどのデバッグgemを駆使してRailsアプリのデバッグをもっと効率的にしましょう!
Happy Debugging Life!