How to use annotate gem

Annotate gem will add the table structure like field name, index, foreign_keys as comments at the top or bottom of the model, it can annotate tests, fixtures, factories, serializers, routes also.

It has option to annotate whenever we run migration rake db:migrate.

Installation

Add this into your Gemfile in development group

group :development do
  gem 'annotate'
end
bundle

Configuration

rails g annotate:install # will generate the rake file

The generated rakefile present under lib/tasks/auto_annotate_models.rake, this file has the default annotate configuration you can override any of those.

Usage

Add schema information as comments to model and fixture files

rake annotate_models 

After execute the command

Sample 1

app/models/user.rb

# == Schema Information
#
# Table name: users
#
#  id                       :integer          not null, primary key
#  email                    :string(255)      default(""), not null
#  gender                   :string(1)
#  first_name               :string(255)
#  last_name                :string(255)
#  encrypted_password       :string(255)      default(""), not null
#  last_sign_in_at          :datetime
#  last_sign_in_ip          :string(255)
#  reset_password_sent_at   :datetime
#  reset_password_token     :string(255)
#  sign_in_count            :integer          default(0), not null
#  created_at               :datetime
#  updated_at               :datetime
#  school_id                :integer
#  state_id                 :integer
#  country_id               :integer
#
# Indexes
#
#  index_users_on_school_id               (school_id)
#  index_users_on_confirmation_token      (confirmation_token) UNIQUE
#  index_users_on_email                   (email)
#  index_users_on_reset_password_token    (reset_password_token) UNIQUE
#
# Foreign Keys
#
#  fk_rails_...  (school_id => schools.id)
#

class User < ActiveRecord::Base
  .....
end


Sample 2

Add the route map to config/routes.rb

rake annotate_routes  

After executing the command

# == Route Map
#
#               Prefix Verb     URI Pattern                        Controller#Action
#                 root GET      /                                  home#index
#        user_password POST     /account/password(.:format)        users/passwords#create
#    new_user_password GET      /account/password/new(.:format)    users/passwords#new
#   edit_user_password GET      /account/password/edit(.:format)   users/passwords#edit
#    user_registration POST     /sign-up(.:format)                 users/registrations#create
#         user_session POST     /sign-in(.:format)                 users/sessions#create
# destroy_user_session DELETE   /sign-out(.:format)                users/sessions#destroy
#                 user GET      /account(.:format)                 users#index
Test::Application.routes.draw do
  root to: 'home#index'
  .....

~~~


- Yogesh Kumar



What do we do?


We work on website development using Ruby on Rails, NodeJS, ReactJS, AngularJS. View all the services we provide here.


Say Hello! See our work