※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
デバックとは
まずデバックとは問題を排除すること
なぜ問題(バグ)が起きるのか考えることより、まず情報を集めることが大事!
最初に見るところ
- railsなどが出してくれるエラーメッセージをしっかり読むこと
今回学習するのはこっち↓
- プログラムが動かないとき、現状の値を確認する
- どこまで動いているのか把握する
問題がどこで起きているのが見つけること
デバッグツール(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
ターミナル(warp)を開く
$ bundle installを実行してpry-byebugのインストールが完了
インストールできないと「local:3000」がエラー画面になるので、ターミナルでサーバーを再起動rails s
してみる
article_controller.rbでbinding.pry
を追加する
binding.pryは、処理を止めるためのコード
処理をとめてなにができるのか?
- ターミナルでコードを実行することができる
- 定義されている値もすべて取得できる
情報収集に非常に便利!
データ自体に問題があるかもしれない・・・
binding.pry
を入れて処理を止めることで、データの中身(変数の値)をすぐに確認することができる
binding.pry
を抜けて次の処理進みたい
→ [2] pry(#)>exit
を実行する
def index
binding.pry
@articles = Article.all
end
local:3000を読み込まない(ずっとロード中)
この状態でターミナル画面に行き、Article.all
を実行する
→ すべてのデータが取得できる
最後(END)
の表示がされて次の指示ができない(コードの入力ができない)
→ qを入力したら[2] pry(#)>
と出て、コードの入力が可能になった
def show
binding.pry
end
記事一覧で記事をクリックしても次の画面に遷移しない(処理が止まっている)
この状態でターミナル画面に行き、@article
を実行する
→ 読み込もうとしている記事情報を取得できる
#DAY16