Ruby on Railsを用いたバックエンドAPI開発の学習記録です。
普段はJavaを使ってきましたが、今回初めてRailsに触れることになりました。
まだ勉強中の身ですが、本番環境に近い構成を目指して、DockerやPostgreSQLなどと組み合わせながら一から構築していきます。
拙い点もあるかと思いますが、温かく見守っていただければ幸いです。
本シリーズの目標
1.Rails(APIモード)での開発環境構築(Docker + PostgreSQL)
2.Devise & Token認証の導入
3.Concernによるロジック分離
4.RSpec + FactoryBotでのテスト環境
5.RESTfulなAPI構成の実践
開発環境
項目 | 内容 |
---|---|
OS | Windows + WSL2 (Ubuntu) |
開発言語 | Ruby 3.2.2 |
フレームワーク | Ruby on Rails 7.x(API モード) |
DB | PostgreSQL |
コンテナ | Docker / docker-compose |
エディタ | VSCode |
Step 0: VSCode × Ubuntu(WSL2)を立ち上げる
- Windowsで VSCode を起動
- 左下SERACH →
Ubuntu
を選択
(またはコマンドパレットからWSL: New Window
を選んで Ubuntu) - Ubuntuターミナルが開いたら、開発用ディレクトリを作成・移動:
mkdir ~/rails_projects
cd ~/rails_projects
-
code .
を実行し、VSCodeでこのフォルダを開く:
code .
Step 1: Rails新規APIプロジェクトの作成
rails new blog_api --api -T -d postgresql
cd blog_api
-
--api
: API専用モードで生成(ビューやアセット不要) -
-T
: Minitestをスキップ(RSpecを後で使う) -
-d postgresql
: PostgreSQLを使用
これは PostgreSQL の C ライブラリが不足している場合に発生します。
解決手順(Ubuntu / WSL2の場合)
以下のコマンドを実行して、必要な開発パッケージをインストールします:
sudo apt update
sudo apt install -y libpq-dev build-essential
Bundlerの再構成と再インストール
プロジェクトディレクトリ内で以下のコマンドを実行:
bundle config set --local path 'vendor/bundle'
bundle install
Step 2: Dockerファイル群の準備
このステップでは、RailsアプリをDockerで起動するために必要なファイルを手動で作成していきます。
現在のディレクトリは以下になっているはずです:
cd ~/rails_projects/blog_api
2-1. Dockerfile の作成
1.VSCodeの左ペインで「新しいファイル」をクリック
2.ファイル名に Dockerfile(拡張子なし)と入力して作成
以下を貼り付けます:
FROM ruby:3.2.2
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN bundle install
COPY . .
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
CMD ["rails", "server", "-b", "0.0.0.0"]
Dockerfile
コピーする
編集する
2-2. docker-compose.yml の作成
1.同じディレクトリに docker-compose.yml を新規作成
2.以下を貼り付け
version: '3.9'
services:
db:
image: postgres:15
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
volumes:
- db-data:/var/lib/postgresql/data
ports:
- "5432:5432"
web:
build: .
command: rails s -b 0.0.0.0
volumes:
- .:/app
ports:
- "3000:3000"
environment:
DATABASE_URL: postgres://postgres:password@db:5432/postgres
depends_on:
- db
volumes:
db-data:
2-3. entrypoint.sh(起動スクリプト)の作成
1.同じディレクトリに entrypoint.sh を作成
2.内容:
#!/bin/bash
set -e
bundle exec rails db:prepare
exec "$@"
作成後、実行権限を付与します:
chmod +x entrypoint.sh
なぜ必要?
Dockerで起動する際に、自動でrails db:createやrails db:migrateなどを実行できるようにするためのスクリプトです。
2-4. config/database.yml を編集
既存ファイル config/database.yml を以下のように書き換えます:
default: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password: password
pool: 5
development:
<<: *default
database: blog_api_development
test:
<<: *default
database: blog_api_test
Step 3: Docker起動とRails確認
以下のコマンドで Docker 環境を構築・起動します:
docker-compose build
docker-compose up
🔸 初回だけ以下を実行してDB作成:
docker-compose run web rails db:create
Step 4: 動作確認
http://localhost:3000