はじめに
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の設定を確認します。
'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が実行されない原因は結局わかりませんでしたが、ひとまずコメントが書き出されました。
もし、原因がわかる方がいましたら、コメント頂けますと幸いです。