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

<

h5 class=”article”>
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コマンドを打って、出力されるのを数秒待つことなく、みることができるのは
小さなストレスを感じずに作業できるのでいいかと思います。

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

ikeda

業務系のエンジニアから2013年Web系エンジニアに転身して、2014年02月よりBPS株式会社に入社。

ikedaの書いた記事

開発
静的解析ツールgem RuboCop

2014年09月11日

開発
blockの利用例 Ruby

2014年07月11日

開発
jsCafe#20に参加してきました

2014年05月17日

週刊Railsウォッチ

インフラ

Rubyスタイルガイドを読む

BigBinary記事より

ActiveSupport探訪シリーズ