日別アーカイブ: 2021年12月25日

Railsのgem「annotate」の使い方(Docker環境)

annotateとは?

モデルにデータベースのスキーマ構造をannotate(注釈)してくれるGem

テーブルを確認する時にDBに潜る必要がなくなるよ。

Dockerでの使い方

Gemfileのgroup :development doに

gem 'annotate'

を記述します。

docker-compose down でコンテナを削除

docker-compose build でコンテナを作り直し

docker-compose up -dで起動してから次のコマンドをする

docker-compose exec web bundle exec annotate 

変わらなかったときは、次のコマンドをする。

docker-compose exec web bundle exec rails g annotate:install

(次回のマイグレーション以降、自動でアノテーションしてくれるコマンド)

もう一度↓をコマンド

docker-compose exec web bundle exec annotate

Annotated (7): app/models/task.rb, test/models/task_test.rb, test/fixtures/tasks.yml, test/fixtures/tasks.yml, app/models/user.rb, test/models/user_test.rb, test/fixtures/users.yml

↑のようにAnnotetedとなっていれば成功していて、次のように

例:app/models/user.rb

# == Schema Information
#
# Table name: users
#
#  id              :bigint           not null, primary key
#  admin           :boolean          default(FALSE)
#  email           :string(255)
#  name            :string(255)
#  password_digest :string(255)
#  remember_digest :string(255)
#  created_at      :datetime         not null
#  updated_at      :datetime         not null
#
# Indexes
#
#  index_users_on_email  (email) UNIQUE
#
class User < ApplicationRecord
  has_many :tasks, dependent: :destroy
  attr_accessor :remember_token
  before_save { email.downcase! }
  validates :name, presence: true, length: {maximum: 15}
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
  validates :email, presence: true, length: {maximum: 100},
            format: {with: VALID_EMAIL_REGEX},
            uniqueness: {case_sensitive: false}
  has_secure_password
  validates :password, presence: true, length: {minimum: 5}, allow_nil: true

# == Schema Informationから始まるテーブル情報が記述されていればOKだよ