技術

【Rails】そろそろデバッグしましょうか

投稿日:

どうも中田です。
今までrailsの開発はIDEを使わずテキストエディタだけでやってきたのですが、
いい加減デバッガでも使おうかと思い、今回に至ります。

 

pry-debuggerを使ってのデバッガです。
pryとはrubyのデバッガのirbのパワーアップ版って感じのイメージでしょうか。

 
 

Gemfileに追加

pry-debuggerやらその他もろもろをGemfileに書きます。

group :development do
  gem 'pry-rails'
  gem 'pry-doc'
  gem 'pry-byebug'
  gem 'pry-stack_explorer'
end

終わったら、$ bundle installしておきます。
 
 

ブレイクポイント追加

ソースコード内にbinding.pryを入れるとその次の行がブレイクポイントになります。
そして、$ rails sで起動

 
 

該当の部分に達すると…

 
 

     4: class LoginController < ApplicationController
     5:   include Ftp
     6: 
     7:   def sign_in
     8:     binding.pry
 =>  9:     e_mail = params['e_mail']
    10:     password = digest(params['password'])
    11:     uuid = params['uuid']
    12:     platform = params['platform']
    13:     device_token = params['device_token']
    14: 
[1] pry(#<LoginController>)> 

 

はい、止まりました。
これでデバッグ可能です。

 
 

ちょっとコマンド

これがあればとりあえずってものです。
調べればもっとたくさんあります。

コマンド 説明
$ ソース表示
p xxxx xxxxの内容を表示
next ステップオーバー
step ステップイン
continue 次のブレイクポイントまで
finish ステップアウト

 
 

備考

前のコマンドをEnterだけで連続して実行できるという設定です。

Pry::Commands.command /^$/, "repeat last command" do
  _pry_.run_command Pry.history.to_a.last
end

 
 

久しぶりですが、こんなところで。

-技術
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

【AWS】nginx/rails/mysqlをインストール

どうも、中田です。 最近AWSにテストサーバを立ち上げて検証したり、 お客様に一 …

no image

[Angular]リアクティブフォームの頻出クラスと定義について

Angularのチュートリアルでは、フォームはngModelで双方向バインドでき …

rails_logo

[Rails] image_tagを使わずにassets内の画像を指定する方法

こんにちは。さとうです。 今回はimage_tagを使わずにassets内の画像 …

no image

heroku + node.jsでError R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

こんにちは heroku + node.jsでアプリを作っていて、いざherok …

no image

【ionic】ナビゲーションバーがちらつく

どうも、中田です。 ionicでアプリを作っていて、なんかナビゲーションバーがち …