ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。
SQLクエリコメント
リンクはこちら
ログに出力されるSQLクエリログに、どのコントローラのどのアクション起因かというのが表示されます。
SQL実行に無駄がないか(結果をキャッシュできる箇所がないか)など調査するのに便利そうですね。
config.active_record.query_log_tags_enabled = true
SELECT "books".* FROM "books" / *action='index',application='Myapp',controller='books'*/ ← この情報が追記される
debug gemによるブレークポイント
リンクはこちら
breakで行数や実行コードを指定して処理を止める
binding.b
やdebugger
で処理を止めた後、break 18
やb 18
で行数で処理を止められます。
また、b Book.new
のようにすると、呼ばれたnewメソッドで処理が止まるようになります。
gemのソースコードを読んだりするときに今まではdebuggerで処理を止めたところからジャンプ先にまたdebuggerを設定して、、とやっていましたが、これを上手に使えば楽になりそうです。
watchでインスタンスの変化があった場合に処理を止める
watch
を使うことで、オブジェクトに変化があった場合に処理を止めてくれます。
ちなみにActiveRecordのインスタンスを指定した際には、インスタンスの属性が変わっただけでは処理は止まりませんでした。
def index debugger # ここで止まった時に、`watch @book`とする @book = Book.first # nil から インスタンスが入るので処理が止まる @book.title = '変更' # 属性が1つ変わるだけでは止まらない @book = :book # シンボル:bookに変わるので止まる end