bin/rails notes

コード内の# TODO: ...などを一覧表示するコマンド。

以下のコードがあるとする。

class ApplicationController < ActionController::Base
  # TODO: svgファイルの対応
  # FIXME: 1GB以上のファイルを指定されるとクラッシュする
  # NOTE: ライブラリのabcメソッドではXYZな挙動をするため、それを回避するための記述
  # XXX: 一部の画像ファイルで動かないことが確認されている チケットABCD-1234を参照
  # BUG: ファイルの内容ではなく拡張子でフォーマットを判定してしまっている
  # OPTIMIZE: 100MB以上のファイルを指定されると極端に遅くなる
  # HACK: トリッキーなコードになりすぎている
  # REVIEW: `ruby script/benchmarks/zzz.rb`でパフォーマンスが悪化していないことを確認すること
end

bin/rails notesを実行すると以下のような結果になる。

app/controllers/application_controller.rb:
  * [2] [TODO] svgファイルの対応
  * [3] [FIXME] 1GB以上のファイルを指定されるとクラッシュする
  * [7] [OPTIMIZE] 100MB以上のファイルを指定されると極端に遅くなる

結果の通り、TODOFIXMEOPTIMIZEのみ結果に表示される。これら以外を表示したい場合はbin/rails notes -a NOTE XXXのようにする。

app/controllers/application_controller.rb:
  * [4] [NOTE] ライブラリのabcメソッドではXYZな挙動をするため、それを回避するための記述
  * [5] [XXX] 一部の画像ファイルで動かないことが確認されている チケットABCD-1234を参照

デフォルトで表示対象を増やしたい場合は、config/environments/development.rbに以下のような行を追加する。

  config.annotations.register_tags('NOTE', 'XXX')

追加後にbin/rails notesを実行すると以下のようになる。

app/controllers/application_controller.rb:
  * [2] [TODO] svgファイルの対応
  * [3] [FIXME] 1GB以上のファイルを指定されるとクラッシュする
  * [4] [NOTE] ライブラリのabcメソッドではXYZな挙動をするため、それを回避するための記述
  * [5] [XXX] 一部の画像ファイルで動かないことが確認されている チケットABCD-1234を参照
  * [7] [OPTIMIZE] 100MB以上のファイルを指定されると極端に遅くなる

その他、ディレクトリの追加などはRails のコマンドラインツール - Railsガイドを参照。