## 【Ruby on Rails】デバッグの方法をたくさん知ってエラーと仲良くなろう!  ### 目次 - **そもそもデバッグって何?** - **三種の神器(Devツール、binding.pry、console)** - **ログを確認しよう!** - **エラーページを特定しながら質問を作ってみよう!** - **【一旦まとめ】切り分けの大切さ** - **その他の検証ツール** - **【おまけ】実務に近い状況を考えてみよう!** - **【まとめ】** ## **そもそもデバッグって何?** - プログラム内の誤り(バグ, bug)を見つけて意図した通りの動作に修正する作業 - エラーが出たときどうやって解決してる? - デバッグツール(デバッガ)を使う → 仮説が必要 → 建設的な質問 → 好かれる → 生 - デバッグツール(デバッガ)を使わない → 仮説がない → 自己満の質問 → 嫌われる → 死 ## **三種の神器(Devツール、binding.pry、console)** - Google Chromeデベロッパーツール(https://www.google.com/intl/ja/chrome/dev/) - 主に生成されるHTMLの確認、HTTPリクエスト、レスポンスの確認 - binding.pry - Rails用のデバッグツール ```ruby gem 'pry-byebug' ``` - rails console - pryとかirbって何?みたいな人(https://hackmd.io/@0ybq7E7CT5GYxDP8A9clgA/rJeS5wdnn ```ruby gem 'pry-rails' ``` ## **ログを確認しよう!** - log/development.log - ログと標準出力の違い(https://hackmd.io/@0ybq7E7CT5GYxDP8A9clgA/HJsXiwh3h) - ログを確認しよう! - Dockerの場合 ``` docker-compose logs ``` - JavaScriptの場合 ``` console.log(内容) ``` ## **エラーページを特定しながら質問を作ってみよう!** - 質問ありきで開発を進める事が理解につながる - はまったいまーを使って時間を区切る(https://hamattimer.app/timer) - 仮説がある半日 vs 仮説がない1週間 ### 質問テンプレート(https://hackmd.io/@0ybq7E7CT5GYxDP8A9clgA/Hk1g_Kp3h) ## 【一旦まとめ】切り分けの大切さ - デバッグを使うと、エラー解決のきっかけができる - **1.** このファイルの **2.** このコードに問題がありそう - ここは必須で質問に入れるべき ## **その他の検証ツール** ### debugger - 標準のデバッグツール - gem入れなくても使える - binding.pryとあんま変わらない(若干メソッドが少ないかも) ### better_errors - エラー画面をきれいに表示して、画面上でコンソール使える - 設定方法 ```ruby #for better_errors gem 'better_errors' gem 'binding_of_caller' ``` - Dockerの場合はもう一工夫設定必要 ```ruby #app/config/environments/development.rb BetterErrors::Middleware.allow_ip! "0.0.0.0/0" ``` - 参考(https://qiita.com/terufumi1122/items/a6f9a939dce25b2d9a3e) ### raise - better_errorsと一緒に使う - 止めたい箇所にraiseを指定すると、better_errorsのページで確認ができる ### その他 - byebug、binding.breakとか(https://techracho.bpsinc.jp/hachi8833/2021_11_22/113636) ## 【おまけ】実務に近い状況を考えてみよう! - 知らない人が書いたコードを読む力が必要 - デバッグとコードリーディングをしないと基本わからない - **メソッドの中のメソッドの中のメソッドの中のメソッドの中のメソッド** - メソッドの定義元に飛べる方法 ``` 設定方法(VSCodeの場合) 1.拡張機能 Rubyを入れる 2.左下の歯車マークから設定を選択 3.rubyと検索 4.【Ruby Intelisence】のドロップダウンリストを選択し、【ruby Locate】を選択 5.VSCodeを再起動 #わからない場合はこちらを参照(https://www.tairaengineer-note.com/visual-studio-code-ruby-method-definition-jump/) ``` [](https://gyazo.com/959c0fadadf375b9132d472df8d0ce43) ## 【まとめ】 - **他の誰かが考えたコードを読む必要あるよね** - 命名するのって大事だよ - デバッグしようね ## 引用 - https://qiita.com/yui-knk/items/63a511d243323bec6fb8 - https://techtechmedia.com/debug-summary-rail/ - https://qiita.com/port-development/items/5ea6448eb2b45c70ef65 - https://qiita.com/sobameshi0901/items/b963e7046e2ae8b8e813 - https://k0kubun.hatenablog.com/entry/2021/04/02/211455
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up