9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Railsで開発時によく使うコマンドまとめ

Last updated at Posted at 2025-01-29

今回は、Rails開発中によく使うコマンドをまとめてみました。新しくRails案件を立ち上げる方や、コマンドの使い方初心者の参考になれば幸いです。

一、Rails アプリ

1. プロジェクトの作成

# 基本的な作成
rails new myapp

# APIモードで作成
rails new myapp --api

# データベースを指定して作成
rails new myapp -d postgresql

# Docker開発環境
rails new backend -r 8.0.0 --devcontainer -d mysql --api --skip-kamal

Docker開発環境のパラメータ説明

  • backend: プロジェクト名
  • -r 8.0.0: Railsのバージョンを8.0.0に指定
  • --devcontainer: VS Code用のdev container設定を追加(Docker開発環境用)
  • -d mysql: データベースにMySQLを使用
  • --api: APIモード(フロントエンド用のビューファイルなどを作成しない)
  • --skip-kamal: Kamal(デプロイツール)の設定をスキップ

2. devise_token_authのインストール

rails g devise_token_auth:install User auth

パラメータ説明

  • User: 認証用のモデル名(この場合はUserモデルを作成)
  • auth: URLのパスに使用される。例:/auth/sign_in

よく使用される認証エンドポイント

このセットアップにより、以下のエンドポイントが自動的に生成されます:

  • サインアップ: POST /auth
  • サインイン: POST /auth/sign_in
  • サインアウト: DELETE /auth/sign_out
  • パスワード変更: PUT /auth/password
  • アカウント更新: PUT /auth

3. サーバーの起動

# サーバーを起動
rails server

# サーバーを起動の省略形
rails s

# ポートを指定して起動
rails s -p 3001

# バインドするIPアドレスを指定
rails s -b 0.0.0.0

4. コンソール操作

# Railsコンソールを起動
rails console

# 省略形
rails c

5. ルーティング確認

# 一覧の確認
rails routes

# APIのルートを確認
rails routes | grep api

# Railsのルーティング一覧から "auth" という文字列を含むルートだけを抽出して表示する
# 特に `devise_token_auth` を使用している場合、このコマンドは非常に便利です
rails routes | grep auth

説明

  • | は「パイプ」と呼ばれ、左のコマンドの出力を右のコマンドの入力として渡します。

  • grep は「全体から (Global)正規表現 (Regular Expression) に一致する行を表示(Print)する」というその名の由来のとおり、文字列を複数ファイルから検索するコマンドです。

二、モデル・データベース関連

1. モデルの作成

2. マイグレーション

# マイグレーションの実行
rails db:migrate

# 一つ前の状態に戻す
rails db:rollback

# DBの削除 → 作成 → 初期データ投入
rails db:reset

# DBを作成
rails db:create

# DBを削除
rails db:drop

DBに初期データを投入

rails db:seed

注意

  1. リセットのrails db:resetは、開発環境のみ使用してください!
  2. rails db:resetrails db:dropなどの破壊するコマンドの実行前に、必ず正しい環境(development/test)で実行しているか確認しましょう
  3. rails generateコマンドで作成したファイルは、rails destroyで削除できます

3. コントローラーの作成

例えば:

# namespace付き、かつ、アクションを指定
rails generate controller api/client/media create

# 省略形
rails g controller api/client/media create

このコマンドを実行すると、以下のファイルが生成されます:

app/controllers/api/client/media_controller.rb

そして、routes.rbには以下のようなnamespace付きのルーティングを追加します:

Rails.application.routes.draw do
  namespace :api do
    namespace :client do
      # ※POSTしたいなら、手動で編集してください
      # post "media", to: "media#create"
      get "media/create"
    end
  end
end

実際のコントローラーの中身は以下のようになります:

module Api
  module Client
    class MediaController < ApplicationController
      def create
      end
    end
  end
end

案件によるけど、バージョン管理(v1, v2など)は最初から導入しておくと後が楽

# APIバージョン管理用
rails g controller api/v1/users
rails g controller api/v2/users

三、Rails ConsoleでのDBのCRUD

まずはRailsコンソールを起動

rails c

1. データの作成(Create)

# 方法1: newとsave
user = User.new(email: "tanaka@example.com", password: "tanakapassword")
user.save

# 方法2: create(一行で作成)
user = User.create(name: "山田花子", email: "yamada@example.com")

# 方法3: create!(エラー時に例外を発生)
user = User.create!(name: "佐藤次郎", email: "sato@example.com")

# 複数のレコードを一度に作成
users = User.create([
  { name: "User1", email: "user1@example.com" },
  { name: "User2", email: "user2@example.com" }
])

2. データの検索(Read)

# 特定のテーブル一覧
User.page

# 最初と最後
User.first
User.last

# 並び順
User.order(created_at: :desc)

# 並び順(複数)
User.order(email: :asc, name: :desc)

# 件数制限
User.limit(5)

findを使った検索

# IDを絞って検索
User.find(1)
User.find_by(id: 1)  # 見つからない場合はnil

# 条件を絞って検索
User.find_by(email: "tanaka@example.com")
User.find_by!(email: "tanaka@example.com")  # 見つからない場合は例外

# 複数の条件を絞って検索
User.find_by(name: "山田花子", email: "tanaka@example.com")

whereを使った検索

# 複数のレコードを取得
users = User.where(active: true)
users = User.where("age >= ?", 20)

# OR条件
users = User.where("age = ? OR age = ?", 20, 30)
users = User.where(age: [20, 30])

# AND条件
users = User.where(age: 20).where(active: true)

集計

# レコード数のカウント
User.count

3. データの更新(Update)

単一レコードの更新

# 方法1: 属性を変更してsave
user = User.find(1)
user.name = "新しい名前"
user.save

# 方法2: update
user = User.find(1)
user.update(name: "新しい名前", email: "new@example.com")

# 方法3: update!(エラー時に例外を発生)
user.update!(name: "新しい名前")

複数レコードの一括更新

# 条件に合うレコードを全て更新
User.where(active: false).update_all(active: true)

# 特定の値を増減
User.where(active: true).update_all("points = points + 10")

4. データの削除(Delete)

単一レコードの削除

user = User.find(1)

# 方法1: destroy(コールバックが実行される)
user.destroy
# 方法2: delete(コールバックが実行されない)
user.delete

複数レコードの削除

# 条件に合うレコードを全て削除
User.where(active: false).destroy_all  # コールバックあり
User.where(active: false).delete_all   # コールバックなし

# 全レコード削除
User.destroy_all

5. その他

# レコードの存在確認
User.exists?(id: 1)
User.where(age: 20).exists?

# 条件に一致するレコードを探すか作成
user = User.find_or_create_by(email: "test@example.com")

四、Bundlerでよく使うコマンド

1. 基本的な使い方

bundlerは、「gemの依存関係とバージョンを管理するためのツール」です。

インストール

bundle install

アップデート

# 全てのgemをアップデート
bundle update

# 特定のgemだけアップデート
bundle update rails

# 複数のgemをアップデート
bundle update rails devise

Bundlerで管理されているコマンドを実行

bundle exec rspec

2. Gemfile操作

新しいGemfileを作成

bundle init

Gemfileに新しいgemを追加してインストール

bundle add devise
bundle add rspec-rails --group development,test

特定のgemを削除

bundle remove devise

3. 確認

インストールされているgemの一覧表示

bundle list

# 特定のgemの情報を表示
bundle list | grep rails

特定のgemの詳細情報を表示

bundle info rails
bundle info devise

必要なgemが全てインストールされているか確認

bundle check

使用していないgemを削除

bundle clean

# 強制的に削除
bundle clean --force

注意

  1. bundle install vs bundle update

    • install: Gemfile.lockの内容を元にインストール
    • update: 最新バージョンに更新してGemfile.lockを書き換え
  2. 環境ごとの管理

    # Gemfileでの書き方
    group :development, :test do
      gem 'rspec-rails'
    end
    

まとめ

この記事を手元に置いておくと、開発作業がスムーズに進めます。

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?