はじめに
Qiita初投稿.
Rails歴は今夏のインターンで始めて3週間くらいです.
この記事はインターンで教えてもらったことのアウトプット兼, 自分の備忘録のために書きました.
不足している要素などあればコメントなどでご教授お願いします.
概要
ローカル環境のRailsとDocker環境上のPostgreSQLで開発環境を作成する.
##この開発環境を作成する理由
- 個人開発をするときに使われることの多いHerokuはPostgreSQLが使われている.
- データベースをDocker上で作成することで, デザイナーなど非エンジニアが環境構築をする際の手間が軽減される.
- Railsをローカルで作成する理由は, bundlerなどバージョン管理ツールが用意されている, またDocker上ではデバッグがしづらくなるため.
環境
rbenv 1.1.2
Bundler 2.0.2
node.js v12.10.0
yarn 1.17.3
postgresql 11.5
Docker 19.03.2
Rails 6.0.0
前提
以下のコマンドがコマンドラインで実行できる.
$ rbenv -v
$ node -v
$ yarn -v
$ psql --version
$ bundle -v
$ docker -v
$ docker-compose -v
手順
Bundlerを初期化してRails newするところまで
$ mkdir [project-name]
$ cd [project-name]
$ bundle init
生成されたGemfileのコメントアウトを外す.
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
# gem "rails" ←この行のコメントを外す
bundle installする.
$ bundle exec rails -v
$ bundle --path vendor/bundle -j4
$ bundle exec rails new . -d postgresql
最後のコマンドを実行した際に「conflict Gemfile」みたいなのが出て聞かれたら「Y」を選択する.
rails new
する時のオプション, bundleのコマンドについては下記のQiita記事が参考になりました.
薄いRailsプロジェクトを rails new する
bundler、bundle execについて ※自分用メモ
Dockerの設定ファイルを記入し, Dockerイメージを作成する
[project-name]/docker-compose.ymlを作成し, 以下のように記入.
version: '3.7'
services:
postgres:
image: postgres
restart: always
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
hostname: postgres
ports:
- 5432:5432
volumes:
- ./data/postgres:/var/lib/postgresql/data
先ほど記入した設定ファイルからDockerイメージをビルドする.
$ docker-compose build
PostgreSQLを起動する.
$docker-compose up -d
終了するとき.
$ docker-compose down
Docker上のPostgreSQLにRailsから接続するための設定をする.
development:
<<: *default
host: localhost ←追加
database: [proj_name]_development
username: root ←追加
password: root ←追加
・
・
・
test:
<<: *default
host: localhost ←追加
database: [proj_name]_test
username: root ←追加
password: root ←追加
データベースを作成する.
$ bin/rails db:create
Railsのローカルサーバーを立ち上げる.
$ bin/rails db:migrate
完成!!
終わりに
Dockerの設定ファイルの部分など自分のなかでおまじない状態になっている部分があるので, それらの説明ができるように勉強していきたいと思います.オススメの本や記事などあれば教えてください.