rails エラー解決法まとめ (デバッグ)

必ずlogを見ること!

railsのログは log > development.log に出力

そのファイルを開いて、中のログを削除して確認する。 ログは削除しても何度でも作られるので問題ない。 f:id:happy_teeth_ago:20190810162319p:plain

logger.debug(変数等)で確認

buybugを利用する バグを発見するのに必要なgem

公式サイトでチェック

rubygems.org

デフォルトでgem fileに記載されている

classの初めでgemを読み込むこと

class TodosController < ApplicationController
  require 'byebug'

byebugを変数を確認したい場所へ追加

byebug と記載する

例えば


 def create
     
    @todo = @goal.todos.new(todo_params)
#@todo にきちんと値が入っているか確認
      byebug
    if @todo.save
      @status = true
    else
      @status = false
    end
  end

#loggerで出力しても良い
//development.logに出力
    logger.debug("hogehoge")
    logger.debug(@goal)
  
 

コマンド一覧

n               ステップオーバー(next)
s               ステップイン(step)どんどん深堀りしていく。
c               実行継続(continue)
fin             ステップアウト(finish)

h               ヘルプ表示(help)
h COMMAND       コマンドのヘルプを表示

変数名          変数の中身を表示
p 変数名        変数の中身を表示
eval 変数名     変数の中身を表示
変数名 = 値     変数に代入
v l             ローカル変数表示
disp 変数名     変数をウォッチする

railsのコンソールに入ってDB等を確認

#sandboxをつけるとDBは影響を受けない
rails c --sandbox

Goal.create(titile: "PHP")

#createしてもuserと結びついていないとロールバックする。モデルがそうなっているので
#この場合、user_idも一緒に作ってあげる
Goal.create(title: "PHP", user_id: 1)

コントローラーのデバッグはこのgem

rails-controller-testing

rubygems.org

参考にさせていただきました。

railsでbyebugの使い方知りたいだけな人向けのメモ - Qiita