2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Rails6.0.0.rc1】rails6のrc版が出たので遊ぶ準備をしてみた

Last updated at Posted at 2019-04-26

概要

前提

  • docker使います。rubyのあるぱいんのイメージ使います。

やってみた

  • 以下dockerコマンドで遊んだ跡です。
  • この辺を後々、Dockerfileにまとめたりネットワーク設定したりしよう。(→ネットワーク追加しました。2019/05/09)

  • dockerネットワークの作成
    • DB接続などの演習もしたいので専用ネットワークを作成しておく
# ネットワークの名前を宣言しておきましょう。
MY_NETWORK_NAME="(任意のネットワーク名)"

docker network create \
    --driver bridge \
    ${MY_NETWORK_NAME}

# 作成できたか確認
docker network ls

  • DBコンテナの用意(例)
    • せっかくなのでMySQL8.0系を使いましょう。
# ユーザーのパスワードなどを決めておきましょう。
MYSQL_ROOT_PASSWORD="(大文字小文字記号数字)"
MYSQL_PASSWORD="(大文字小文字記号数字)"
# MySQLコンテナ名
MYSQL_CONTAINER_NAME="(任意のコンテナ名)"

# コンテナ作成。(コマンド追加で認証方式は従来のパスワード方式にしておく。)
docker run \
    --detach \
    --env MYSQL_DATABASE=app_development \
    --env MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} \
    --env MYSQL_USER=app \
    --env MYSQL_PASSWORD=${MYSQL_PASSWORD} \
    --env TZ="Asia/Tokyo" \
    --name ${MYSQL_CONTAINER_NAME} \
    --net ${MY_NETWORK_NAME} \
    --tty \
    mysql:8.0 \
    mysqld --default-authentication-plugin=mysql_native_password

# 確認
docker exec -it ${MYSQL_CONTAINER_NAME} mysql -u root -p
Enter password:

mysql> -- DB作成がされているかを確認
mysql> show databases;

  • Rails6.0のコンテナを作成
# Railsコンテナ名
RAILS_CONTAINER_NAME="(任意のコンテナ名)"

# rubyのコンテナを作成。
# (オプションなどは弊社でよく使う設定になっています)
docker run \
    --detach \
    --env APP_DATABASE_PASSWORD=${MYSQL_PASSWORD} \
    --env APP_DATABASE_USER=app \
    --env BUNDLE_APP_CONFIG=/app/.bundle \
    --env TZ="Asia/Tokyo" \
    --name ${RAILS_CONTAINER_NAME} \
    --net ${MY_NETWORK_NAME} \
    --tty \
    --workdir /app \
    ruby:2.6-alpine

# いつものように必要なパッケージをインストールしていきます。

docker exec -it ${RAILS_CONTAINER_NAME} apk update
docker exec -it ${RAILS_CONTAINER_NAME} apk upgrade

# みんな大好きnokogiri用のパッケージたち
docker exec -it ${RAILS_CONTAINER_NAME} apk add --no-cache build-base libxml2-dev libxslt-dev
# DBパッケージ追加。mysqlに変える想定で。
docker exec -it ${RAILS_CONTAINER_NAME} apk add --no-cache mysql-client mysql-dev
# yarnも入れましょう。webpackerで使いそうなので。(タイムゾーンデータもいるらしい)
docker exec -it ${RAILS_CONTAINER_NAME} apk add --no-cache yarn tzdata
docker exec -it ${RAILS_CONTAINER_NAME} yarn install

# 使い捨てのGemfileでRailsのバージョンを指定しましょう
docker exec -it ${RAILS_CONTAINER_NAME} vi Gemfile

# Gemfile内容は以下のように作成
    1	# frozen_string_literal: true
    2	
    3	source "https://rubygems.org"
    4	git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
    5	gem "rails", "6.0.0.rc1"

# bundlerの設定をちまちま
docker exec -it ${RAILS_CONTAINER_NAME} bundle config --local path vendor/bundle
docker exec -it ${RAILS_CONTAINER_NAME} bundle config --local build.nokogiri --use-system-libraries
# 確認
docker exec -it ${RAILS_CONTAINER_NAME} bundle env

# rails6.0.0.rc1 をインストールだ!!
docker exec -it ${RAILS_CONTAINER_NAME} bundle install --path vendor/bundle

# 確認
docker exec -it ${RAILS_CONTAINER_NAME} bundle exec rails --version
> Rails 6.0.0.rc1

# プロジェクト新規作成。さっき作ったGemfileは上書きさせよう。
docker exec -it ${RAILS_CONTAINER_NAME} bundle exec rails new . --database mysql --force

# DB接続の設定
docker exec -it ${RAILS_CONTAINER_NAME} ls -lahF /app/config/
docker exec -it ${RAILS_CONTAINER_NAME} vi /app/config/database.yml

# お試しなのでdevelopment環境の部分を編集する。
    20	development:
    21	  <<: *default
    22	  database: app_development
    23	  username: app
    24	  password: <%= ENV['APP_DATABASE_PASSWORD'] %>
    25	  host: "MySQLのコンテナ名"

# 早速ためそうぜ!! →→→→6.0から導入されたメソッドが使える!!!!
docker exec -it ${RAILS_CONTAINER_NAME} bundle exec rails console
# Running via Spring preloader in process 1327
# Loading development environment (Rails 6.0.0.rc1)
irb(main):001:0> 'いろはにほへとちりぬるを'.truncate_bytes(25)
=> "いろはにほへと…"

# サーバー立ち上げもできるよ!!
docker exec -it ${RAILS_CONTAINER_NAME} bundle exec rails server
# アクセスできました!!
docker exec -it ${RAILS_CONTAINER_NAME} wget -O - localhost:3000
# Connecting to localhost:3000 (127.0.0.1:3000)
# <!DOCTYPE html>
# <html>
# <head>
#   <title>Ruby on Rails</title>
#   ...

# とりま今日はここまで。

これからやること

  • Dockerfile化
  • DBコンテナの用意 (2019/05/09追記)
  • docker-compose化
  • 新卒組への説明会
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?