
テーブルのスキーマがわからなくなるときの対応
Railsで開発を行なっているときに、まだ馴染みのないモデルに遭遇すると、どういったカラムがあるかなど、スキーマがわからずに困ることがよくあります。
db/schema.rbを確認すればわかるのですが、モデルのファイルを見ながらdb/schema.rbを見るのは不便です。
何かしらの方法でテーブルのスキーマを確認しつつモデル内でロジックを実装したい、その場合に利用すると便利なgemがannotateです。
gemの追加
annotateというgemがあるので追加します。Gemfileを編集します。
1 | group :development do |
bundle installします
1 | $ docker compose run --rm web ./bin/bundle install |
インストールができました。GemfileとGemfile.lockをcommitしておきます。
annotateの設定ファイルの作成
annotateの設定ファイルを生成するgeneratorがあるので実行します。
1 | $ docker compose run --rm web ./bin/rails g annotate:install |
annotateのカスタマイズ
カスタマイズに関しては、先程作成したタスクのAnnotate.set_defaultsメソッドの引数を編集することで行います。
わたしが変更した内容を記載します。
position_in_xxxx
xxxxにはclassやfactoryなどが入ります。それぞれのファイルのどの部分にannotateによるドキュメントを追加するか、という設定になります。
コードの後ろに追加した方が見通しがいいかなと思い、afterに変更しています(デフォルトはbefore)
1 | 'routes' => 'false', |
with_comment
trueだとカラム名の横にそのカラムに設定されているコメントが追加されます。ですが、カラムを削除する際に、annotateが正しく動作しなかったので、falseに設定します。
1 | 'wrapper_open' => nil, |
動作確認
ここで正しく動作するか確認します。
1 | $ docker compose run --rm web ./bin/bundle exec annotate |
このように表示されればOKです。ファイル数にはコメントが追加されたファイル数、ファイル名にはコメントが追加されたファイルのパスが表示されます。
まとめ
annotateはいつも使っている便利なgemです。慣れている人なら馴染み深いものではありますが、始めたばかりの人にとっては知らないけど知っているととても便利なものという感じかと思います。ぜひ使ってみてください。