【Rails】migrate時にAnnotateが実行されない


はじめに

Annotateが実行できず、コメントが書き出されない時に試したことをまとめました。

環境

  • Rails6.0.3
  • Ruby2.7.1
  • annotate3.1.1

Annotateとは

schemaに書かれている情報をルーティングの情報をファイルの先頭にコメントしてくれるgemです。
カラム情報やルーティングを確認する手間が省くことができます。
導入や詳細な使い方は下記を参考にしました。
【Rails】annotateの使い方

発生したバグ(migrate時にコメントが書き出されない)

migrate時にannotateが実行され、modelにコメントされる設定にしているのに、実行されないという問題が発生しました。
作業ブランチで1つ目のmigrationファイルを作成して、migrateした時はコメントが書き出されたのに、作業同じブランチで2つ目のmigrationファイルを作成して、migrateしたら、コメントが書き出されませんでした。

いろいろ試しましたが、最終的には一度コメントを削除してから、migrateしたら、上手く行きました。

やったこと

1. 設定ファイルを確認

$ bundle exec rails g annotate:installで生成されたlib/tasks/auto_annotate_models.rakeのAnnotateの設定を確認します。

auto_annotate_models.rake
'skip_on_db_migrate' => 'false', 

falseになっているのでmigrate時にコメントが書き出される設定になっています。(ここは問題なし)

2. 手動でAnnotateを実行

migarate時に実行されないので手動でAnnotateを実行します。
これでもコメントが書き出されない。。

$ bundle exec annotate --models

3. gemを再インストール

それでもコメントが書き出されない場合は、gemを最インストールします。
再インストールすると直った場合もありました。

4. annotateのコメントを削除する

私の場合、いろいろ試してもコメントが書き出されなかったので、コメントを削除することにしました。

$ bundle exec annotate --delete

modelからコメントが削除されたことを確認して、migrateもしくは手動で実行。

$ bundle exec rails db:migrate

or

$ bundle exec annotate --models

削除して、migrateすると全てのモデルに書き出されました。

おわりに

migrate時にannotateが実行されない原因は結局わかりませんでしたが、ひとまずコメントが書き出されました。
もし、原因がわかる方がいましたら、コメント頂けますと幸いです。