5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-10-06

はじめに

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を実行します。
これでもコメントが書き出されない。。

.bash
$ bundle exec annotate --models

3. gemを再インストール

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

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

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

.bash
$ bundle exec annotate --delete

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

.bash
$ bundle exec rails db:migrate

or

$ bundle exec annotate --models

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

おわりに

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

5
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?