rails解説セミナー: railsアプリケーションのデバッグ

28
アプリケーションのデバッグ編 Rails解説セミナー http://railsguides.jp/

Upload: yohei-yasukawa

Post on 11-Apr-2017

468 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Rails解説セミナー: Railsアプリケーションのデバッグ

アプリケーションのデバッグ編

Rails解説セミナー

http://railsguides.jp/

Page 2: Rails解説セミナー: Railsアプリケーションのデバッグ

セミナーを 始める前に

Page 3: Rails解説セミナー: Railsアプリケーションのデバッグ

講義中に参照したリンクはコメント欄で (質問もお気軽に)

講師のターミナルは下記 URL から閲覧できます :)

http://screenx.tv/yasulab

Page 4: Rails解説セミナー: Railsアプリケーションのデバッグ

Slide is in SlideShare!

http://www.slideshare.net/yasulab/presentations

Page 5: Rails解説セミナー: Railsアプリケーションのデバッグ

質問はいつでもお気軽に! 個別相談は休憩や終了後に :)

Page 6: Rails解説セミナー: Railsアプリケーションのデバッグ

Sample App で実験 :)

https://github.com/yasslab/sample_app

Page 7: Rails解説セミナー: Railsアプリケーションのデバッグ

1. $ git clone \ https://github.com/yasslab/sample_apps.git

2. 対象のディレクトリに移動後: $ git init ; $ bundle exec rake db:migrate $ bundle exec rake db:test:prepare $ bundle exec rake db:populate

3. $ gem install rails --version 4.0.5 4. $ rbenv install 2.2.2 5. $ gem install rails --version 4.2.3

下準備

Page 8: Rails解説セミナー: Railsアプリケーションのデバッグ

Ready?

Page 9: Rails解説セミナー: Railsアプリケーションのデバッグ

解説セミナーを 進めていきましょう!

Page 10: Rails解説セミナー: Railsアプリケーションのデバッグ

アプリケーションのデバッグ編

Rails解説セミナー

http://railsguides.jp/

Page 11: Rails解説セミナー: Railsアプリケーションのデバッグ

• 中級者~上級者向けの大型リファレンス

• 読み進める順番は特になく、機能毎に解説:

• e.g. Active Record の基礎、バリデーション

• e.g. Action View の概要、フォームヘルパー

• e.g. Action Controller の概要、ルーティング

• 例外: Railsをはじめよう → Rails チュートリアル

• ウェブ版は全編無料! http://railsguides.jp/

Railsガイドとは?

Page 12: Rails解説セミナー: Railsアプリケーションのデバッグ

今回のテーマ

Page 13: Rails解説セミナー: Railsアプリケーションのデバッグ

Rails アプリケーションのデバッグhttp://railsguides.jp/debugging_rails_applications.html

Page 14: Rails解説セミナー: Railsアプリケーションのデバッグ

• デバッグに利用できる View ヘルパー

• Logger の紹介とデモ

• お題: どこのページが一番時間が掛かってる?

• byebug / web-console の紹介とデモ

• コマンド: help, step, next, var, display, edit, quit

• byebug で sign_in メソッドを探索してみよう!

• web-console で sign_in してみよう!

今回やること

Page 15: Rails解説セミナー: Railsアプリケーションのデバッグ

• デバッグに利用できる View ヘルパー

• Logger の紹介とデモ

• お題: どこのページが一番時間が掛かってる?

• byebug / web-console の紹介とデモ

• コマンド: help, step, next, var, display, edit, quit

• byebug で sign_in メソッドを探索してみよう!

• web-console で sign_in してみよう!

今回やること

Page 16: Rails解説セミナー: Railsアプリケーションのデバッグ

• debug メソッド

• to_yaml メソッド (+ simple_format メソッド)

• inspect メソッド<%= simple_format params.to_yaml.inspect %>

• お題: 確認してみよう! <%= debug params %> と<%= simple_format params.to_yaml %> は同じ結果になる?

デバッグに役立つ View ヘルパー

Page 17: Rails解説セミナー: Railsアプリケーションのデバッグ

• STDOUT出力とファイル出力Rails.logger = Logger.new("foobar") # config/initializers/logger.rb

• デバッグの出力レベルlogger.(debug|info|warn|error|fatal) 緊急度: 低 debug <———> fatal 高

• rails s -e production のエラー原因を出力してみよう! 本番環境を手元で作ってエラー原因を調べてみる# RAILS_ENV=production

• お題: どこの処理が一番時間が掛かっている?

Logger の紹介とデモ

Page 18: Rails解説セミナー: Railsアプリケーションのデバッグ

• デバッグに利用できる View ヘルパー

• Logger の紹介とデモ

• お題: どこのページが一番時間が掛かってる?

• byebug / web-console の紹介とデモ

• コマンド: help, step, next, var, display, edit, quit

• byebug で sign_in メソッドを探索してみよう!

• web-console で sign_in してみよう!

今回やること

Page 19: Rails解説セミナー: Railsアプリケーションのデバッグ

• Gemfile に byebug を追加`def sign_in(user)`の直後に `byebug` と追加して実行

• 各種コマンド:help コマンドの説明を表示するlist 次の10行を表示して、Iterator を移動list- 前の10行を表示して、Iterator を移動list= Iterator を現在位置まで戻し、前後10行を表示backtrace 現在のコードに至るまでの過程を表示frame n 呼び出したメソッドの絶対位置に移動up [n] / down [n] 呼び出しメソッドに相対的に移動

byebug gem の紹介

Page 20: Rails解説セミナー: Railsアプリケーションのデバッグ

• 各種コマンド (続き):Ctrl-d byebug から抜け出すthread [list|switch] 現在のスレッドを [表示 | 移動] next 次の1行を実行する (frame 内の次の行)  # remember_token に値が代入されたことに注目var [local|global] スコープ内の変数を一覧表示するdisplay 引数に与えられた変数を監視する # display @current_user でログイン情報を確認step 次に1行を実行する (frame 関係なく次の行)  # @current_user は、いつ代入されるのか?

byebug gem の紹介

Page 21: Rails解説セミナー: Railsアプリケーションのデバッグ

• 他、細かいメソッドなど:break breakpointsの設置/表示などで使う catch 与えられた例外処理の種類を調査edit  エディタで与えられたファイルを開くquit  全てのスレッドを終了する (サーバも停止) set  各種設定を変更するsystem システムコマンドを呼び出す

• お題: この self は誰?self.current_user = user # app/helpers/sessions_helper.rb

byebug gem の紹介

Page 22: Rails解説セミナー: Railsアプリケーションのデバッグ

• byebug の簡易ブラウザ版みたいなもの (併用化) Rails 4.2 から標準として導入された 変数をちょっと確認したい時とかに便利

• Gemfile に web-console を追加gem 'web-console', '~> 2.0'

• コード内に console を追加コントローラ: consoleビューの場合: <% console %> いつも表示したい: application.html.erb に設置デモ: sign_in User.first を実行して byebug に入ろう!

web-console gem の紹介

Page 23: Rails解説セミナー: Railsアプリケーションのデバッグ

• デバッグに利用できる View ヘルパー

• Logger の紹介とデモ

• お題: どこのページが一番時間が掛かってる?

• byebug / web-console の紹介とデモ

• コマンド: help, step, next, var, display, edit, quit

• byebug で sign_in メソッドを探索してみよう!

• web-console で sign_in してみよう!

今回やること

Page 24: Rails解説セミナー: Railsアプリケーションのデバッグ

お疲れ様でした

Page 25: Rails解説セミナー: Railsアプリケーションのデバッグ

今回やったこと• デバッグに利用できる View ヘルパー

• Logger の紹介とデモ

• お題: どこのページが一番時間が掛かってる?

• byebug / web-console の紹介とデモ

• コマンド: help, step, next, var, display, edit, quit

• byebug で sign_in メソッドを探索してみよう!

• web-console で sign_in してみよう!

Page 26: Rails解説セミナー: Railsアプリケーションのデバッグ

参考情報

Page 27: Rails解説セミナー: Railsアプリケーションのデバッグ

Rails アプリケーションのデバッグhttp://railsguides.jp/debugging_rails_applications.html

Page 28: Rails解説セミナー: Railsアプリケーションのデバッグ

アプリケーションのデバッグ編

Rails解説セミナー

http://railsguides.jp/