バックエンドの開発はいろいろあります。
ただ、個人開発程度なら「rails」でいいんじゃね?的な感じに僕の中でなってきましたので、数年ぶりにRailsに入信したいと思います。
強くてニューゲームで今回はセットアップ!やってきます。
注意事項
この記事書きながらセットアップしています。
なので、ベストプラクティスな方法ではないと思います。
ご容赦ください。
事前準備
dockerでセットアップやってくぜい!なので、dockerとdocker-composeくらいはlocalマシンに導入しといてください。
セットアップ
railsパクってくる
docker hubの公式rails imageがあるのですが、更新が止まってる?っぽいので、今回はこれを使って開発環境を作っていきます。
https://hub.docker.com/r/bitnami/rails
docker-composeの作成
以下のようなdocker-composeを作成し、保存します。
version: "3.2"
services:
app:
image: bitnami/rails:5.2.3-0
volumes:
- type: bind
source: ./app
target: /app
ports:
- "3000:3000"
command: sleep infinity
db:
image: postgres:10
environment:
- "POSTGRES_USER=postgres"
- "POSTGRES_PASSWORD=mysecretpassword1234"
作成したら以下コマンドでコンテナを作成し、コンテナ内へ入ります。
docker-compose up -d
docker-compose exec app bash
railsアプリの作成
カレントディレクトリは/appになっているので、railsアプリを作成します。(今回はdb=postgresでかつapiモードで作成します。)
rails new . --api -d postgresql
そしたらpqのGem周りで怒られるので、エラーがでないように修正します。
・エラー文
An error occurred while installing pg (1.1.4), and Bundler cannot continue.
Make sure that `gem install pg -v '1.1.4' --source 'https://rubygems.org/'` succeeds before bundling.
---
・対応
sudo apt-get update
sudo apt-get install libpq-dev
bundle install
bundle installでエラーが出なくなればokです。
最後にdatabaseの接続設定を行っておきましょう。(default部分を以下のように編集します。)
default: &default
adapter: postgresql
encoding: unicode
host: db # 追記[docker-composeで記述したdbサーバを指定]
username: postgres # 追記
password: mysecretpassword1234 #追記
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
以下コマンドでdatabaseが作成されることを確認します。
rails db:create
railsの起動
すべての準備は整いました。
railsを起動してみます。
rails s -b 0.0.0.0
おわりに
docker使うとlocalが汚れないし、複数メンバーでの開発の場合、開発環境に差異が生まれにくい、かつ、高速で環境構築できるのでいいですね〜。
ただ、知見ないとハマりやすくはありますが。。。
railsの公式ページを見てるとv6がbetaバージョンで公開されていますね。
v6でどういった進化を遂げるか期待です!