Railsの開発環境を作成するメモ
急遽Railsの開発環境を作る必要があり、最近の構築方法を探ってたところクジラに乗った Ruby: Evil Martians 流 Docker+Ruby/Rails 開発環境構築(翻訳)| TechRacho by BPS 株式会社という記事を見つけた。サラッと読んでみたところ非常に良さそうだったので自分用に最小限のリポジトリへとDocker周りを切り出し、その他再利用できるように作成手順を自分用にまとめておく。内容としてはほぼ元記事。
今後Railsで開発する時はこれをベースに必要なもの/不要なものを Dockerfile や docker-compose から足し引きするだけになりそう。Rails7系からはWebpackerが不要になると思うのでその辺りは都度調整が必要かも。
Clone
とりあえずはDockerfile等の入ったリポジトリをcloneしておく。
git clone git@github.com:YuheiNakasaka/docker-rails-basis.git
cd docker-rails-basis
デフォルトの構成
この環境では下記の構成がデフォルトで作成される。
- PostgreSQL + Redis
- Rails + Webpacker + sidekiq
基本方針
この環境はdocker-compose up
は使わずにdocker-compose up rails
などと具体的に指定して実行する。bundle exec などのコマンドは runner コンテナ内で行う想定。
開発環境の立ち上げ
docker-compose.yml
の Ruby のバージョンを変更しておく。https://hub.docker.com/_/rubyにある-slim-buster
の tag を参考に。
args:
RUBY_VERSION: '2.6.3'
runner を立ち上げる。
docker-compose run --rm runner
これで runner 環境にログイン。以下 bundle コマンドの実行は runner 内のシェルで行うものとする。
Rails アプリの作成(初回のみ)
version は適宜変更する。
source 'https://rubygems.org'
gem 'rails', '~> 6.1.4'
bundle install
bundle exec rails new . --force --no-deps --database=postgresql --webpack=typescript
rails db:create
Rails アプリの起動
docker-compose up rails
gem や db の作成は cache されているので 2 回目以降はいきなりこのコマンドを叩くだけでアプリが立ち上がる。
削除
docker-compose down
以下は任意の作業
JS ファイルの置き場所
app/javascript/packs
配下にファイルを置くとコンパイルのオーバーヘッドが大きくなり時間がかかるのでファイルは基本的にapp/javascript/src
に配置する。
mkdir app/javascript/src
Slim 対応
gem 'slim-rails' # 追加
bundle install
app/views/layouts
配下のファイルを slim に変更
doctype html
html
head
title
| Myapp
meta[name="viewport" content="width=device-width,initial-scale=1"]
= csrf_meta_tags
= csp_meta_tag
= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload'
body
= yield
doctype html
html
head
meta[http-equiv="Content-Type" content="text/html; charset=utf-8"]
style
| /* Email styles need to be inline */
body
= yield
= yield
Discussion