rails-debugger について
rails-debuggerは、Rails開発者がアプリケーションのエラーを調べるためのデバッグスキルです。ログやスタックトレースの分析、問題の切り分け、バグの分類、最小限の修正と検証手順の整理を支援します。
主な機能
- 01ログとスタックトレースの分析
- 02データベースと依存関係の確認
- 03コンソールでの再現と二分探索
- 04直近の変更の調査
- 05検証を含む構造化バグレポート
活用シーン
- 01例外の発生元をアプリケーション内で特定
- 02マイグレーションや依存関係の問題を調査
- 03報告されたバグを再現して分類
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ majesticlabs-dev/ majestic-marketplace --skill rails-debuggerインストール後、Claude Code で/rails-debuggerを入力して読み込まれたか確認します。
詳細
Rails デバッガー
デバッグのプロセス
1. 情報を収集する
tail -100 log/development.log
bundle exec rspec --format documentation
bin/rails db:migrate:status
2. スタックトレースを分析する
発生源を特定する:
app/ディレクトリ内の最初の行を見つける- ファイル、行番号、メソッドを確認する
よくあるパターン:
| エラー | 考えられる原因 |
|---|---|
NoMethodError: undefined method for nil:NilClass | 関連付けの不足、戻り値が nil |
ActiveRecord::RecordNotFound | ID が存在しない、スコープの問題 |
ActiveRecord::RecordInvalid | バリデーションに失敗 |
ActionController::ParameterMissing | 必須のパラメーターが送信されていない |
NameError: uninitialized constant | require の不足、タイプミス |
LoadError | ファイルが見つからない、自動読み込みパスの問題 |
3. よくある問題を確認する
データベース:
bin/rails db:migrate:status
bin/rails db:schema:dump
依存関係:
bundle check
bundle install
4. 問題を切り分ける
コンソールで再現する:
user = User.find(123)
user.some_method # Does it fail here?
二分探索:
- コードの半分をコメントアウトする
- エラーは引き続き発生するか?
- 範囲を絞り込む
5. 最近の変更を確認する
git log --oneline -20
git log -p --follow app/models/user.rb
git diff HEAD~5 app/models/user.rb
デバッグ手法
仮説の検証
- 具体的で検証可能な仮説を立てる
- 仮説を証明または反証するための最小限のテストを設計する
- 除外できた項目を記録する
状態の確認
Rails.logger.debug { "DEBUG: user=#{user.inspect}" }
binding.irb # Pause here (Rails 7+)
Rails でよくある問題
N+1 クエリ
grep "SELECT" log/development.log | sort | uniq -c | sort -rn
修正:User.includes(:posts)
ルーティングの問題
bin/rails routes | grep users
bin/rails routes -c users
コールバックの問題
User._create_callbacks.map(&:filter)
User._save_callbacks.map(&:filter)
バグ報告の検証
分類
| ステータス | 意味 |
|---|---|
| 確認済みのバグ | 明確な仕様との差異を再現できた |
| 再現できない | 再現できない |
| バグではない | 仕様に沿った正しい動作 |
| データの問題 | 特定のデータに関する問題 |
出力形式
- 再現状況 - 確認済み / 再現できない / バグではない
- 根本原因 - 実際に何が問題なのか(なぜかを説明する)
- 証拠 - 具体的なログ、トレース、またはコード
- 修正 - 最小限のコード変更
- 予防 - 同様の問題を避ける方法
- 検証 - 修正を確認するコマンド/テスト
コメント
Markdown 対応