rails エラー解決法まとめ (デバッグ)
必ずlogを見ること!
railsのログは log > development.log に出力
そのファイルを開いて、中のログを削除して確認する。 ログは削除しても何度でも作られるので問題ない。
logger.debug(変数等)で確認
buybugを利用する バグを発見するのに必要なgem
公式サイトでチェック
デフォルトで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
参考にさせていただきました。