Rails開発の流れについて
本記事では下記の流れに沿って簡易的なタスク管理アプリを作成してみようと思います。
・Railsプロジェクトの作成とDockerの設定(今回学習するのはこちら)
・Gem・DB設定とルーティング
・Bootstrapの導入
・一覧、新規作成、参照、更新、削除画面機能の追加
・検索機能の追加
・DBやモデル周りの整備
・バリデーション機能追加
・ユーザー認証機能追加
(※ 他追加機能があれば随時記事にしていく予定です)
まずざっくり前提とした環境としては以下です。
・Docker
・Ruby on Rails 7
・Mysql
・BootStrap
・VSCode
本記事では上記環境構築が既に行われている前提で
Railsプロジェクトの作成とDockerの設定から進めていきます。
〇 Railsプロジェクトの作成とDockerの設定
まずアプリを作成するにあたって、根幹となるファイルを作成します。
Railsは大変便利なのでコマンドを打つとすぐに必要なファイルを作成してくれます。
最初にターミナルを開き、railsのアプリケーションファイルを作成したいディレクトリまで移動します。
cd C:\programs2024
programs2024で下記コマンドを実行する。
# railsのコンテナを起動してrailsアプリのベースとなるファイルを作成する
# 入力例
C:\programs2024> docker run --rm -ti -v "$(pwd)\task-practice:/app" ruby:3.2.2-alpine sh
「docker run」
...特定のDockerイメージからコンテナを起動させるという意味
「--rm」
...コンテナを終了したときにコンテナを自動で削除するというオプション
「-ti」
...コンテナでシェルを立ち上げた際に、シェルでコマンドを実行や、
コマンドの実行結果を画面に表示するため必要なオプション
「-v "$(pwd)\task-practice:/app"」
...PC上のtask-practiceディレクトリを、コンテナの/appディレクトリにマウントする指定。
PC上からコンテナで作成したファイル等を直接見ることができるようにするもの。
「ruby:3.2.2-alpine」
...イメージ名(今回使用するrubyのバージョン)
「sh」
...コンテナ内で実行するコマンドの指定(今回はシェルを用いる)
入力箇所が下記のように変化するのを確認する
/#
下記のコマンドを順番に打っていく
# システムのパッケージリストを最新の状態に更新するためのコマンド
apk update
# gitと、mysqlを使用するシステムを開発するのに必要なmysql-devをインストールする
apk add git g++ make mysql-dev
# RubyのパッケージシステムであるRubGemを最新バージョンに更新するためのコマンド
gem update --system
# railsのアプリケーションを作成するコマンド
rails new app --database=mysql --skip-bundle --skip-test
apk
…Alpine Linuxで使用されるパッケージマネージャーAlpine Package Keeperの意
g++
…C++コンパイラのこと。C++プログラムをコンパイラするのに使用する
--system
…gem updateコマンドに対して、RubyGemsパッケージマネージャ自体を更新するために使用するオプション
--database=<データベース名>
...作成する新しいアプリケーションで使用するデータベースの種類を指定するオプション
--skip-<処理名・ファイル名等>
...アプリケーション作成時に、「-」後に指定した処理やファイルの作成を行わないようにするオプション
「--skip-bundle」は新しいアプリケーション作成時にbundle installを行わずにスキップすることを意味する
最後のコマンドまで問題なく実行できたら、ファイルが作成されているか確認する
/#
ls -la /app
ここまででまずRailsのベースとなるファイルの作成が一通り終わりました。
VSCodeで作成したRailsアプリケーションのフォルダー(ここではtask-practice)を開き、
次にDockerの設定ファイル(Dockerfileとdocker-compose.yml)をapp直下に作成します。
Dockerfile
docker compose buildというコマンドを打って環境を更新(個人的な認知としてはリフレッシュに近い)する際に行いたい処理を記載するファイル
# 記載例
FROM ruby:3.2.2-alpine
RUN apk update
RUN apk add g++ make mysql-dev tzdata
WORKDIR /app
COPY Gemfile .
RUN bundle install
docker-compose.yml
…開発環境を立ち上げるために必要なファイル
これを記入し、ようやくdocker compose upでコンテナの立ち上げを行うことができる
(DBのimage等は使用するDBによって変化するので任意の項目となる)
# 記載例
services:
web:
build: .
command: sh -c "rm -f tmp/pids/server.pid && rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/app
ports:
- 3000:3000
depends_on:
- db
db:
image: mysql:8.0
volumes:
- db-volume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
db-volume:
Railsのベースとなるファイル作成とDockerの設定が完了したので、
次の記事ではRailsで開発を行う上で重要なルーティングについてまとめていきたいと思います。