はじめに
こんにちは、ソナーのタルイシです。
デバックについて自分の中で整理できていなかったので、
最近使った方法と一緒にデバックについてまとめます!
デバッグとは
debug(デバッグ)= 不具合の原因を特定する作業。
実際にやっていることは、
・値の確認
・想定との差分の確認
・処理の流れの確認
つまり、
「想定と現実の差分を探す作業」だと今は理解しています。
Viewでのデバッグ(結果を見る)
エラーが出たとき、
まずやっているのは「出してみる」こと。
◆オブジェクトを丸ごと確認
<%= debug @users %>
ここで確認しているのは、
「そもそもnilじゃないか」「何件入っているか」「想定しているカラムがあるか」
データがある前提で考えてしまう癖があるので、
まず前提を疑うように癖図づけを行っています。
◆値だけ確認
<%= @user.name %>
<%= params[:id] %>
ここで確認しているのは、
「想定している値が入っているか」「paramsがちゃんと届いているか」を確認しています。
Controllerでのデバッグ(原因を見る)
◆puts でログに出す
def index
puts params[:id]
end
◆Rails.logger を使う
def index
Rails.logger.debug params.inspect
Rails.logger.debug @blob
#Rails.logger.ログレベル 表示したいもの
end
paramsの中身についても、つい無意識に届いている前提で書いてしまうことが多いと感じています。
そのため、意識して確認するようにしています。
※puts や Rails.logger.debug の出力は Rails サーバーを起動しているターミナルに表示される。
ただし、私は Docker を使ってバックグラウンド起動(-d オプション)しているため、直接ターミナルには表示されない。
そのため、ログの確認は次のコマンドで行っている。
$ docker compose logs -f
最後に
必要に応じて適切な確認ができるよう、
値や処理の流れを丁寧に追いながら経験を積み重ねていきたいと思います。
※ この記事は新人研修の一環です