はじめに
今回「現場で使えるrails5実戦ガイド」を読んだのですが、本書が2018年のもので色々とバージョンが古く、序盤の環境構築で苦戦したので参考になったものを残していきたいと思います。(現在2024年)
躓いた部分
① apt-get update
本書のrubyバージョンが2.5.1のため、同バージョンのdocker imageを仕様したもののOSのバージョンが古く、デッドリンクを参照しているためエラーに。
参照先のリンクを修正することで解消。
参考
echo "deb http://archive.debian.org/debian/ stretch main" > /etc/apt/sources.list \
&& echo "deb http://archive.debian.org/debian-security stretch/updates main" >> /etc/apt/sources.list \
&& apt-get update
② apt-get install
installするのは以下
apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
zlib1g-devの1
をl
と見間違え、タイポしたためエラー。
本の印字だと意外と気づかない🥲。
参考
③ gem update --system
最新版のRubyGemsは古いrubyのバージョンをサポートしておらずエラーに。
2系の最新版を入れることで解消。
gem update --system 2.7.11
④ gem install bundler
3と同様のサポート切れ。
今回はエラーで対象の最終バージョンを教えてくれたので、そちらで対応。
ERROR: Error installing bundler:
The last version of bundler (>= 0) to support your Ruby & RubyGems was 2.3.27. Try installing it with `gem install bundler -v 2.3.27`
bundler requires Ruby version >= 3.0.0. The current ruby version is 2.5.0.
gem install bundler -v 2.3.27
⑤ gem install rails -v 5.2.1
railsをインストールしようとしてエラー。エラーに従ってnokogiriをインストール。
gem install nokogiri -v 1.12.5
しかしまた別のエラー。調べてみると、以下コマンドを流すといけるらしい。参考
gem install rails-html-sanitizer -v 1.5.0
その後もrailsインストール時にエラーは出るものの、エラーの通りにインストール
gem install thor -v 1.2.2
gem install timeout -v 0.4.0
gem install net-protocol -v 0.1.2
gem install net-imap -v 0.2.2
gem install net-smtp -v 0.3.0
gem install mini_mime -v 1.1.2
ここまでインストールすると、railsがインストールできるようになる。
gem install rails -v 5.2.1
Dockerfile
ここまで書いたものをDockerfileに
FROM ruby:2.5.1
RUN echo "deb http://archive.debian.org/debian/ stretch main" > /etc/apt/sources.list \
&& echo "deb http://archive.debian.org/debian-security stretch/updates main" >> /etc/apt/sources.list \
&& apt-get update \
&& apt-get install -y autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev zlib1g-dev \
&& gem update --system 2.7.11 \
&& gem install bundler -v 2.3.27 \
&& gem install nokogiri -v 1.12.5 \
&& gem install rails-html-sanitizer -v 1.5.0 \
&& gem install thor -v 1.2.2 \
&& gem install timeout -v 0.4.0 \
&& gem install net-protocol -v 0.1.2 \
&& gem install net-imap -v 0.2.2 \
&& gem install net-smtp -v 0.3.0 \
&& gem install mini_mime -v 1.1.2 \
&& gem install rails -v 5.2.1 \
&& curl -sL https://deb.nodesource.com/setup_10.x |bash - \
&& apt-get install npm