Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

『Railsの教科書』を動かすまで Rails on Ubuntu 20.04 LTS + WSL2

f:id:espio999:20210502222333p:plain
達人出版界の電子書籍Railsの教科書』がGitHubで公開されている。公開されているとはいえ、それはPDFやePubではなくRailsアプリケーションだ。
Railsの教科書 - 達人出版会
GitHub - igaiga/rails_textbook

Railsの教科書を参照するために、Rails環境を構築しなければならない。それは本末転倒な気がする一方、自力で環境構築に成功したならば、第2章以降から始まるRailsアプリ開発は、定番のHello World代わりの題材としては最適だ。

Railsの教科書』の導入手順はGitHubで公開されているのだが、動作環境の状況に応じて、実際には一手間必要なこともある。先日投稿した手順に沿った環境でも、やはりインストールはスムーズにいかなかったのだ。
Ubuntu 20.04 LTS+WSL2でRailsを起動するまで-Yarnはnpmから導入する - Technically Impossible

この投稿では、先日構築した環境へ『Railsの教科書』をインストールする手順を紹介する。

前提

あらかじめ、導入先となるRails環境を構築しておく必要がある。この投稿での環境は、次の投稿で紹介した手順に従って構築したものだ。
impsbl.hatenablog.jp

Railsの教科書』の入手

入手から導入手順は、冒頭のGitHubに記載されている通りだ。

環境構築メモ > ローカルで閲覧

git clone https://github.com/igaiga/rails_textbook.git
cd rails_textbook
bundle install
jekyll serve --watch --baseurl ''

まずGitHubからクローンし、フォルダへ移動するところまでのコマンドを実行する。

git clone https://github.com/igaiga/rails_textbook.git
cd rails_textbook

bundle、ライブラリの導入など

インストールを実行する前に解決しなければならないことがある。

  1. bundlerのバージョン相違
  2. ライブラリの導入

インストールに利用されるbundleのバージョンと整合させるため、加えてインストール中のコンパイルに必要なライブラリを補うためだ。具体的には、nokogiriの導入に際しlibxml2のビルドが実行される。このとき求められるzlibを導入しておく必要がある。
次のコマンドを実行する。

sudo gem install bundler:1.17.3
sudo apt install zlib1g-dev

Railsの教科書』のインストール、実行

環境が整えば、次のコマンドでインストールする。

bundle install

場合によっては、引数に関する警告が多数表示されるかもしれないが、無視する。
問題なくインストールが完了したら、次のコマンドでアプリケーションを実行するのだが...

jekyll serve --watch --baseurl ''

その前に、ファイル”Gemfile.lock”を編集する。”concurrent-ruby”の指定ヴァージョンを、次のように変更する。初期状態であれば”1.1.6”が指定されているのだが、これが実行に差し障る。そのため新しいヴァージョンを指定する。

concurrent-ruby (1.1.8)

ちなみに、このファイル編集は、本来であればインストール実行前に実施しておくべきことなのかもしれない。上記コマンド実行によって生じる問題に気付いてから、解決法を模索するという、実際に経験した段取りを投稿に反映している都合だ。

気になる場合は、フォルダ”rails_textbook”を削除し、”git clone”からやり直しても良いだろう。それは次のような手順になる。

本来の手順

git clone https://github.com/igaiga/rails_textbook.git
cd rails_textbook

sudo gem install bundler:1.17.3
sudo apt install zlib1g-dev

# ここで”Gemfile.lock”を編集する。

bundle install

そして、今後の簡便のため、実行コマンドを手短なファイル名のシェル・スクリプトに置き換えておく。今後、WSL環境を立ち上げるたびに、起動コマンドを繰り返す手間が緩和される。

cat <<EOF > railstext.sh
jekyll serve --watch --baseurl ''
EOF

chmod 777 railstext.sh

ファイル名は任意だが、ここでは”railstext.sh”としている。このファイルを実行して、ブラウザから”http://localhost:4000/rails_textbook/”を参照する。表示されるのが、投稿冒頭に添付した画像の画面だ。

ページのキャプチャを、いくつか添付しておく。

一番小さなRailsアプリづくり
f:id:espio999:20210502222509p:plain

あとがき
f:id:espio999:20210502222613p:plain