【rails】pry-byebugによるデバック(値の確認)

※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

デバックとは

まずデバックとは問題を排除すること

なぜ問題(バグ)が起きるのか考えることより、まず情報を集めることが大事!

最初に見るところ

  • railsなどが出してくれるエラーメッセージをしっかり読むこと

今回学習するのはこっち↓

変数の値
  • プログラムが動かないとき、現状の値を確認する
  • どこまで動いているのか把握する

問題がどこで起きているのが見つけること


デバッグツール(pry-byebug)について

変数の値を見るためのデバッグツールを導入する

gem ‘pry-byebug’

VScodでGemfileを開く

gem ‘pry-byebug’のコードを追加する

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'pry-byebug'
end

$ bundle install

ターミナル(warp)を開く

$ bundle installを実行してpry-byebugのインストールが完了

インストールできないと「local:3000」がエラー画面になるので、ターミナルでサーバーを再起動rails sしてみる

binding.pry

article_controller.rbでbinding.pryを追加する

binding.pryは、処理を止めるためのコード


処理が止まっているメリット

処理をとめてなにができるのか?

  • ターミナルでコードを実行することができる
  • 定義されている値もすべて取得できる

情報収集に非常に便利!

データ自体に問題があるかもしれない・・・

binding.pryを入れて処理を止めることで、データの中身(変数の値)をすぐに確認することができる


[2] pry(#)>exit

binding.pryを抜けて次の処理進みたい

→ [2] pry(#)>exitを実行する


index内にbinding.pryを入れる

    def index
        binding.pry
        @articles = Article.all
    end

local:3000を読み込まない(ずっとロード中)

この状態でターミナル画面に行き、Article.allを実行する

→ すべてのデータが取得できる

最後(END)の表示がされて次の指示ができない(コードの入力ができない)

→ qを入力したら[2] pry(#)>と出て、コードの入力が可能になった


show内にbinding.pryを入れる

    def show
        binding.pry
    end

記事一覧で記事をクリックしても次の画面に遷移しない(処理が止まっている)

この状態でターミナル画面に行き、@articleを実行する

→ 読み込もうとしている記事情報を取得できる

#DAY16