Rails v2.3 を v5.2 へバージョンアップした話 第二章「そして自動化へ・・・」

  • #Ruby
  • #Rails
  • #プログラミング
Rエンジニア

前回のあらすじ

Rails v2.3 を v5.2 へバージョンアップした話 第一章「幻の環境」

勇者Rは、担当者より 歴史(コマンド履歴) を手に入れた。これでやっと、Windowsパソコンに環境構築を進めることができるのである。

さて、一体全体、どんな構築をしていくのか!?

※記事中の物語はフィクションです

ゲームといえば攻略本

R「攻略本をまずは読もう」

効率厨である勇者Rは、もう攻略本を読んでしまった。

R「まずはv2からv3だな」

Ruby on Rails 3.0 リリースノート

Rails 3.0は、晩ご飯も作れば洗濯物も畳んでくれる、夢のような製品です。

なんとv3は私生活にも影響を及ぼすものだった。今はv6(執筆時)なのだが、将来は宇宙旅行くらいいけるようになっているのだろうか。

Bundlerによる明示的な依存性管理

R「やっぱりBundlerだよな」

勇者Rは、Rails開発でいつも利用しているBundlerが対応されているのを見つけ、歓喜に満ちた。今日の晩酌は某9%アルコール飲料で決まりだ。

R「おつまみは何にしようかな」

そんなことを考えていると、重大なことを忘れていた。

R「まだ、v2が動かないんだった」

環境構築がまだできていなかったのである。v2が起動しないのだ。そのため、先にv2の環境構築をすることに決めた。

R「今夜は徹夜だな」

お酒とおつまみを片手に、アルコール駆動開発をすることになりそうだ。

エンジニアにとって、一番ワクワクする時だ。

環境構築を自動化へ

R「これいつもめんどくさいんだよな」

みんな大好き、環境構築のことである。環境構築手順書が存在しても、OSやバージョン違いがあるため、完全に統一することは難しいのである。

R「王様から旅立つ時にいただいた手紙を読んでみるか」

バージョンアップは君の好きにしたまえ

完全丸投げ、暴挙である。

R「じゃあ持ってきたこの道具を使おうか」

勇者Rはチーターである。強くてニューゲームでバージョンアップの旅に出かけていたのであった!

某VRゲーマーの世界では、禁忌に匹敵する!

R「これを使おう」

取り出したのはDockerであった。

Dockerとは

Docker - Wikipedia

Docker(ドッカー[2])は、コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのオープンソースソフトウェアあるいはオープンプラットフォームである[3]。 出典: フリー百科事典『ウィキペディア(Wikipedia)』

勇者Rは、毎回Dockerを用いてゲームを攻略しているオートマチッカーである。

R「まずはv2のDockerfileとdocker-compose.ymlを作るか」

Dockerの使い方については、公式サイトが一番分かりやすいと思うので、そこを読んで攻略してくれ。前回取得した歴史(コマンド履歴)から、必要なライブラリなどのインストールを記述した。機密情報なので、サンプルである。

# Dockerfile
FROM ubuntu:16.04

# パッケージ
RUN apt update
RUN apt upgrade -y
RUN apt install -y {必要なパッケージ}

# rbenv
RUN apt install -y ruby-build {必要なパッケージ}
ENV PATH /root/.rbenv/shims:$PATH
RUN rbenv install {任意のバージョン}
RUN rbenv global {任意のバージョン}
RUN rbenv rehash

# gemライブラリインストール
RUN gem update --system
RUN gem install {必要なライブラリ1}
RUN gem install {必要なライブラリ2}
...

# 以下、続く

その後、docker-compose.ymlも作成し、ビルドをする。

cd {作業ディレクトリ}
docker-compose up -d --build
...
...
Starting app ... done

R「キタ━━━━(゚∀゚)━━━━!」

勇者Rは、お酒とつまみを食べながらビルドを待っていた。数分の出来事だったので、一口とマカダミアナッツを2粒しか食べることができなかった。

R「さて rails server で動かしてみるか」

docker-compose exec app rake db:create db:migrate db:seed
docker-compose exec app rails server -b 0.0.0.0
...
...
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

R「キタ━━━━(゚∀゚)━━━━!!」

無事にv2が起動したのであった。深夜なので無駄にテンションが高い。なぜこのテンションを昼間に維持しないのか。しかし、やっとはじまりの町で準備が整っただけである。

勇者Rの旅はこれからだ。今夜は酒におぼれるぜ。

次回

Rails v2.3 を v5.2 へバージョンアップした話 第三章「攻略本なんてなかった」

この記事を書いた人

Rエンジニア
おすすめRECOMMENDED