Tech Racho エンジニアの「?」を「!」に。
  • 開発

schemaをmodelに書き出してくれるgem annotate

こんにちは、kikedaです。
今回は、gem annotateを紹介しようと思います。小ネタです。

rails appを開発していると頻繁に、rake routeでルーティングを確認したり、dbからtableのschemaを確認することは、多々あると思いますが、私は、こういった手間を省くのにannotateを利用しています。
ただ、サポートしているruby, railsのversionについて、READMEには記載されていないので、ruby, railsのversionを記載しておくと。

$ ruby -v
# => 2.1.0-p0

$ rails -v
# => 4.1.5

この環境で動作を確認しています。

gem annotate

annotateは、各schemaの情報をファイルの先頭もしくは末尾にコメントをつけてくれるgemです。
schema、routingなどを直接ファイルを開くことで確認することができるようになります。

annotateの導入

rails appを想定していますので、導入は簡単です。
Gemfileに記載して、bundle installコマンドを実行します。

$ vi Gemfile

#... Gemfile
  gem 'annotate'

$ bundle install

schema情報の追加

tableのschemaをコメントとして追加

$ cd rails_app/
$ bundle exec annotate
model

user.rb

fixtures
fixture.rb

test
test.rb

spec
spec.rb

factory
factory.rb

routingにコメントを追加 

$ cd rails_app/
$ bundle exec annotate --routes

route.rb

設定でファイルの末尾に記載することも可能です。

設定ファイルの作成

$ bundle exec rails g annotate:install

rake db:migrate時にannotateを起動してコメントを追加

$ vi lib/tasks/auto_annotate_models.rake

...省略
'skip_on_db_migrate'   => "true",
...省略

コメントをファイルの末尾に記載

ファイルの先頭に別のコメントが含まれている場合には、annotateのコメントを末尾に追加することができます。

$ vi lib/tasks/auto_annotate_models.rake

...省略
      'position_in_routes'   => "before",
      'position_in_class'    => "before",
      'position_in_test'     => "before",
      'position_in_fixture'  => "before",
      'position_in_factory'  => "before",
...省略

# beforeをafterに返ることでファイルの末尾に記載できます。
# annotateのコメントを末尾する場合は、下記のように直します。

      'position_in_routes'   => "after",

model_dirの値を変更することで,railsアプリ以外で利用することでもできます。

      'model_dir'            => "app/models",

以上です。ブラウザやrake routeコマンドを打って、出力されるのを数秒待つことなく、みることができるのは
小さなストレスを感じずに作業できるのでいいかと思います。


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。