Ruby
MySQL
docker-compose
Rails5

Rails5はじめました。

ド初心者

Railsはおろか、Rubyも9年前ぐらいにHello world表示したぐらいの感じだったけど、Rails5を初めてみました。
そもそも、Railsって何? 何ができるの? っていうところから、よくわかってません。
APIサーバみたいなのを作りたいかな、作れるのかなって、ふわっと思ってます。
とりあえずやってみます。

環境構築

まずは環境構築。
ここを参考にDocker composeで構築しました。
https://qiita.com/jshimazu/items/ba13ce87dfdb11e2d1d9
https://techracho.bpsinc.jp/ebi/2017_05_25/40438

DBはMySQLです。

プロジェクトのディレクトリ作成

mkdir rails-study
cd rails-study

環境設定ファイルの準備

rails-study/Dockerfile
FROM ruby:2.5.0
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /rails-study
WORKDIR /rails-study
ADD Gemfile /rails-study/Gemfile
ADD Gemfile.lock /rails-study/Gemfile.lock
RUN bundle install
ADD . /rails-study
#コマンド叩いてファイルを作る。何か必要らしい。
touch Gemfile.lock
rails-study/docker-compose.yml
version: '3'
services:
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/rails-study
    ports:
      - "3000:3000"
    depends_on:
      - db
rails-study/Gemfile
source 'https://rubygems.org'
gem 'rails', '5.1.4'

新規プロジェクト作成

docker-compose run web rails new . --force --database=mysql --skip-bundle

イメージをビルド

docker-compose build

生成されたdatabase.ymlの設定を編集

rails-study/config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
-  password:
+  password: password
-  host: localhost
+  host: db

DBを新規作成

docker-compose run web rake db:create

サービス起動

docker-compose up -d

起動したアプリにアクセス

http://localhost:3000/

なんか初期表示が出た。
スクリーンショット 2018-01-19 9.56.49.png

簡単な機能の作り方

#scaffoldというのを使って、Memo機能を追加
docker-compose run web rails g scaffold Memo title:string body:text
#追加したMemo機能に関するDB定義を自動的に設定してくれる風なコマンド
docker-compose run web rails db:migrate

Memo機能にアクセス

http://localhost:3000/memos

ワーオ。2行コマンド叩くだけで、簡単な編集画面のテンプレが出来た。すげー。爆速でビックリしました。
スクリーンショット 2018-01-19 10.01.54.png

以上。