はじめに
ポートフォリオ作成に入って、コマンドのルールなんだったけ?
と忘れていることが多々あったので、よく使用するコマンドをアウトプットのためにまとめています!
都度追加予定です。
アプリケーション作成
最初に必ず行うアプリケーション作成です
今回は「my_crop_plan」というアプリを作成していきます
$ rails new アプリケーション名
$ rails new my_crop_plan
model作成
基本中の基本model作成です
今回は「Plan」という投稿用モデルを作成していきます
$ rails g model モデル名
$ rails g model Plan
この g は、generateの略です。生成という意味です
🌱modelの命名規則
英数字の単数形で指定し、先頭は大文字で記述するルールがあります
もし複数の単語を組み合わせる場合は、「PostPlan」などにしましょう
モデル作成時にカラムを追加する方法1
モデルを作成するときに一緒にカラムを追加できます!(migrateを忘れずに)
今回はRelationshipモデルを作成します
モデル名 カラム名:データ型↓
$ rails g model Relationship follower_id:integer followed_id:integer
$ rails db:migrate
モデル作成時にカラムを追加する方法2(外部キーの場合)
🌱中間テーブルを作成するときに便利なコマンドです!
$ rails g model PlanTag plan:references tag:references
$ rails db:migrate
referencesとは(直訳:参照、参考)
名前の通り、作成済みのテーブルを参照する場合に使用します
コマンドを実行すると下記カラムがマイグレーションファイルに自動追加されます
t.references :plan, null: false, foreign_key: true
t.references :tag, null: false, foreign_key: true
後からマイグレーションファイルに追加することも可能!
アソシエーションの「belongs_to」を自動追記
※「has_many」は追加してくれないので注意⚠️
参考URL:https://prograshi.com/framework/rails/references_and_foreign-key/
model削除
誤って作成したmodelを削除します
今回は先ほど作成した「Plan」モデルを削除していきます
$ rails d model モデル名
$ rails d model Plan
controller作成
同じく基本のcontroller作成です
先ほどの「Plan」モデルの「plans」のコントローラーを作成します
3パターン記載していきます
通常のcontroller作成
$ rails g controller コントローラー名
$ rails g controller plans
controller作成 + ルーティング・ビューを同時に作成
$ rails g controller plans new index show
自動作成される↓
class PlansController < ApplicationController
def new
end
def index
end
def show
end
end
Rails.application.routes.draw do
get 'plans/new'
get 'plans/index'
get 'plans/show'
end
<h1>Public::Plans#index</h1>
<p>Find me in app/views/public/plans/index.html.erb</p>
controller作成 + ルーティング・ビューを同時に作成 + 保存場所をpublicフォルダに指定
$ rails g controller public/plans new index show
publicファイルに全て作成されたりルーティングされたりします!
不要なものを自分で削除したり修正しましょう!
🌱controllerの命名規則
複数形かつ全て小文字で書くのがルールです
もし複数の単語を組み合わせる場合は、「post_plans」などにしましょう
migration
マイグレーションファイルを修正したい!
って時に使用するコマンドを紹介します!
ステータス確認
rails db:migrate:statusをすると現在のステータスを確認できます
MigrationIDなどあとで使用する情報もここに含まれています!
$ rails db:migrate:status
Running via Spring preloader in process 13765
database: db/development.sqlite3
Status Migration ID Migration Name
--------------------------------------------------
up 20240601103957 Devise create users
up 20240602043254 Create plans
up 20240608084410 Create comments
up 20240608115131 Create likes
up 20240611072708 Create relationships
up 20240613025152 Create rooms
up 20240613025320 Create chats
up 20240613025358 Create user rooms
リセット
まだ何もデータがない時ならresetをすることでマイグレーションファイルをschema.rbに反映できます!既にデータを保存している場合は、消えてしまうのでそれでもよかったらリセットしましょう!
例)既に会員登録をしてユーザーが存在している、投稿している
→ ユーザーが全て消えます!、投稿データも消えます!
$ rails db:migrate:reset
ロールバック1
直近に作成した1つのマイグレーションファイルをdownにすることができます!
$ rails db:rollback
ステータスを確認してみると↓
$ rails db:migrate:status
Running via Spring preloader in process 18072
database: db/development.sqlite3
Status Migration ID Migration Name
--------------------------------------------------
up 20240601103957 Devise create users
up 20240602043254 Create plans
up 20240608084410 Create comments
up 20240608115131 Create likes
up 20240611072708 Create relationships
up 20240613025152 Create rooms
up 20240613025320 Create chats
down 20240613025358 Create user rooms
一番下のuser roomsがdownになりました!
この状態でマイグレーションファイルを修正し、rails db:migrateを実行すると、user roomsの変更点がschema.rbに反映されてステータスがupに戻るはずです!
マイグレーションファイルの修正をデータベースに反映させるには、一度ステータスをdownにしてからrails db:migrateを実行する必要があります!
migrateしたら反映されているかschema.rbを確認するようにしましょう!
ロールバック2
直近の3つのファイルをdownに変更するコマンド
$ rails db:rollback STEP=3
$ rails db:migrate:status
Running via Spring preloader in process 19522
database: db/development.sqlite3
Status Migration ID Migration Name
--------------------------------------------------
up 20240601103957 Devise create users
up 20240602043254 Create plans
up 20240608084410 Create comments
up 20240608115131 Create likes
up 20240611072708 Create relationships
down 20240613025152 Create rooms
down 20240613025320 Create chats
down 20240613025358 Create user rooms
ロールバック3
指定のマイグレーションファイルをdownにするコマンド
$ rails db:migrate:down VERSION=該当のMigrationID
例)chatsのファイルだけを修正したい場合
$ rails db:migrate:down VERSION=20240613025320
$ rails db:migrate:status
Running via Spring preloader in process 19522
database: db/development.sqlite3
Status Migration ID Migration Name
--------------------------------------------------
up 20240601103957 Devise create users
up 20240602043254 Create plans
up 20240608084410 Create comments
up 20240608115131 Create likes
up 20240611072708 Create relationships
up 20240613025152 Create rooms
down 20240613025320 Create chats
up 20240613025358 Create user rooms
あとは修正したいファイルを修正して、rails db:migrateするだけです!
grepコマンド省略形
ルーティングを確認するのに、今までgrepで絞り込んでいましたが
省略形を教えていただきました!!!
打ちやすい!!!
$ rails routes | grep user
↓
$ rails routes -g user
RSpecテスト実行コマンド
全てのテストを走らせる
$ bundle exec rspec spec/ --format documentation
ファイルを指定してテストを走らせる
今回はsystemの中のplans_spec.rbのみ走らせる
$ bundle exec rspec spec/system/plans_spec.rb --format documentation
ファイルを指定かつ行数を指定してテストを走らせる
今回は先ほどのファイルの156行目から一連のテストを走らせる
$ bundle exec rspec spec/system/plans_spec.rb:156 --format documentation
さいごに
メモがてら都度追加予定です!