改訂4版 基礎Ruby on Rails 基礎シリーズ(1回目)

はじめに

年に何度かやる気が沸いてきて、すぐに冷める悲しい習慣の一つにRuby on Railsの本を読んで勉強しようということがある。
もう10年近くそんなことをやってる気もするが一向に身につかないばかりか、勉強することよりも本に載っていることをすべて実行したいがモチベーションに代わっている気もする。
で、いつも題材にしている本が以下の本でKindle Unlimited契約だと0円で読める。最初はそこがきっかけだったがすでに何年も経過しているので買ったほうが安いぐらいだ。
そして決して本が悪いわけではなく、自分の集中力の問題がだが、この手の本は時間経過とともに環境が古くなっていき、改めて環境構築を始めると本に合わせた環境構築ができない問題が発生して、また沸いてた意欲が冷めてしまうものである。
ということで今回こそ、冷めずにやりきることと、現時点で辛うじて環境構築ができたので、その記録を残しておくことの二つを目的にして何度かに分けて進めていこうと思う。

開発環境構築(1.2節)

自環境について

PC本体はSurface go 3 LTEを使っている。
Windows11にアップグレード済みだ。

WSLのインストール

Microsoft StoreからUbuntuをインストールした。
Ubuntu 22.04.3 LTSなどバージョン情報付きのものもあるけど、バージョン情報がついてないほうを使った。
WSLのバージョンは2.0.14.0だ。
インストールが終わったら、以下を実施しておく。
よくわからないがおまじないだ。
historyからの抜粋だ。

    3  sudo apt-get update
    4  sudo apt-get -y upgrade

Rubyのインストール

ここはつまずくポイントはなく、本に書いてある通りだ。
historyからの抜粋だ。
それぞれ何しているかはわからないが、ruby 2.5.1版がインストールされる。

    5  sudo apt-get -y install rbenv ruby-build
    6  git clone https://github.com/rbenv/rbenv.git ~/.rbenv
    7  echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
    8  echo 'eval "$(rbenv init -)"' >> ~/.bashrc
    9  view ~/.bashrc
   10  source ~/.bashrc
   11  mkdir -p ~/.rbenv/plugins
   12  cd ~/.rbenv/plugins/
   13  git clone https://github.com/rbenv/ruby-build.git
   14  cd
   15  rbenv install 2.5.1
   16  rbenv global 2.5.1
   17  ruby -v

これが実行結果の抜粋だ。
特筆することなくできるので、後半のコマンドの実行結果だけ以下に残しておく。rbenv install 2.5.1がやたら時間がかかる。コンパイルしているみたいだね。
(rootで実行している結果だけど実際は自分のアカウントでやっている。)

root@DESKTOP-0EGOP77:~# rbenv install 2.5.1
==> Downloading ruby-2.5.1.tar.bz2...
-> curl -q -fL -o ruby-2.5.1.tar.bz2 https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.bz2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 13.3M  100 13.3M    0     0   504k      0  0:00:27  0:00:27 --:--:--  329k
==> Installing ruby-2.5.1...

WARNING: ruby-2.5.1 is past its end of life and is now unsupported.
It no longer receives bug fixes or critical security updates.

-> ./configure "--prefix=$HOME/.rbenv/versions/2.5.1" --enable-shared --with-ext=openssl,psych,+
-> make -j 8
-> make install
==> Installed ruby-2.5.1 to /root/.rbenv/versions/2.5.1

NOTE: to activate this Ruby version as the new default, run: rbenv global 2.5.1
root@DESKTOP-0EGOP77:~# rbenv global 2.5.1
root@DESKTOP-0EGOP77:~# ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

Railsのインストール

ここは最高に躓くポイントだ。Googleで調べて、先人たちの知恵だけを借りて乗り越えないといけない。
まずはhistoryからの抜粋だ。
腕が無いの力づくで対応するしかない。

   18  sudo apt-get install -y build-essential patch ruby-dev zlib1g-dev liblzma-dev
   19  gem install rails --version=5.2.1 -N
   20  gem install nokogiri -v 1.12.5
   21  gem install rails --version=5.2.1 -N
   22  gem install rails-html-sanitizer -v 1.5.0
   23  gem install rails --version=5.2.1 -N
   24  gem install bundler -v 2.3.27
   25  gem install rails --version=5.2.1 -N
   26  gem install thor -v 1.2.2
   27  gem install rails --version=5.2.1 -N
   28  gem install timeout -v 0.4.0
   29  gem install rails --version=5.2.1 -N
   30  gem install net-protocol -v 0.1.2
   31  gem install rails --version=5.2.1 -N
   32  gem install net-imap -v 0.2.2`
   33  gem install net-imap -v 0.2.2
   34  gem install rails --version=5.2.1 -N
   35  gem install net-smtp -v 0.3.0
   36  gem install rails --version=5.2.1 -N
   37  gem install mini_mime -v 1.1.2
   38  gem install rails --version=5.2.1 -N
   39  rails -v

上記19で大きく躓くのだ。
ERRORって。。。ここで心折れるが今回は頑張ることにしたのでGoogleで調べる。結果的にnogogiriとrails-html-sanitizerのバージョンを下げることで解消する問題みたいだ。

root@DESKTOP-0EGOP77:~# gem install rails --version=5.2.1 -N
Fetching: concurrent-ruby-1.2.3.gem (100%)
Successfully installed concurrent-ruby-1.2.3
Fetching: thread_safe-0.3.6.gem (100%)
Successfully installed thread_safe-0.3.6
Fetching: tzinfo-1.2.11.gem (100%)
Successfully installed tzinfo-1.2.11
Fetching: i18n-1.14.1.gem (100%)
Successfully installed i18n-1.14.1
Fetching: activesupport-5.2.1.gem (100%)
Successfully installed activesupport-5.2.1
Fetching: racc-1.7.3.gem (100%)
Building native extensions. This could take a while...
/root/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/ext/builder.rb:76: warning: Insecure world writable dir /mnt/c in PATH, mode 040777
Successfully installed racc-1.7.3
Fetching: nokogiri-1.16.2-x86_64-linux.gem (100%)
ERROR:  Error installing rails:
        The last version of nokogiri (>= 1.6) to support your Ruby & RubyGems was 1.12.5. Try installing it with `gem install nokogiri -v 1.12.5` and then running the current command again
        nokogiri requires Ruby version < 3.4.dev, >= 3.0. The current ruby version is 2.5.0.

まずはgem install nokogiri -v 1.12.5を打てというので、素直に試す。
でもまたERRORだ。

root@DESKTOP-0EGOP77:~# gem install rails --version=5.2.1 -N
ERROR:  Error installing rails:
        There are no versions of nokogiri (~> 1.14) compatible with your Ruby & RubyGems. Maybe try installing an older version of the gem you're looking for?
        nokogiri requires Ruby version < 3.4.dev, >= 3.0. The current ruby version is 2.5.0.

ここから先は自力解決できないので先人の知恵を拝借する。
ERROR以下3行をgoogleにぶちこみ、検索結果のトップに出てくる以下サイトにたどり着く。
知恵がないので、途中の解説について十分に理解はできていないが、次の問題と理解し、対応策も記載されており大変助かりました。ありがとうございました。

  • rubyとrails、nokogiriのバージョン組み合わせに不整合がある。

  • 新しいバージョンと古いバージョンでのログを読むことで、どこでコケているかを調べられる。

  • 「actionpack が依存している actionview をインストール中に nokogiri をインストールしにいっているっぽい。」という考察からrails-html-sanitizerのバージョンによるものと原因を特定

原因の特定方法まで丁寧に解説されており、問題も解決できた。

さて、前に進める。
この後、ERRORがでるがgem installl hogehoge -v 1.1.1など、次のアクションを促してくれるので、力技で乗り越える。

root@DESKTOP-0EGOP77:~# gem install rails --version=5.2.1 -N
Fetching: rails-dom-testing-2.2.0.gem (100%)
Successfully installed rails-dom-testing-2.2.0
Fetching: erubi-1.12.0.gem (100%)
Successfully installed erubi-1.12.0
Fetching: builder-3.2.4.gem (100%)
Successfully installed builder-3.2.4
Fetching: actionview-5.2.1.gem (100%)
Successfully installed actionview-5.2.1
Fetching: rack-2.2.8.gem (100%)
/root/.rbenv/rbenv.d/exec/gem-rehash/rubygems_plugin.rb:6: warning: Insecure world writable dir /mnt/c in PATH, mode 040777
Successfully installed rack-2.2.8
Fetching: rack-test-2.1.0.gem (100%)
Successfully installed rack-test-2.1.0
Fetching: actionpack-5.2.1.gem (100%)
Successfully installed actionpack-5.2.1
Fetching: sprockets-4.2.1.gem (100%)
Successfully installed sprockets-4.2.1
Fetching: sprockets-rails-3.4.2.gem (100%)
Successfully installed sprockets-rails-3.4.2
Fetching: bundler-2.5.6.gem (100%)
ERROR:  Error installing rails:
        The last version of bundler (>= 1.3.0) to support your Ruby & RubyGems was 2.3.27. Try installing it with `gem install bundler -v 2.3.27` and then running the current command again
        bundler requires Ruby version >= 3.0.0. The current ruby version is 2.5.0.

10回近く同じことを繰り返していけば、最後はrailsのインストールはできた。

root@DESKTOP-0EGOP77:~# gem install rails --version=5.2.1 -N
Fetching: mail-2.8.1.gem (100%)
Successfully installed mail-2.8.1
Fetching: actionmailer-5.2.1.gem (100%)
Successfully installed actionmailer-5.2.1
Fetching: rails-5.2.1.gem (100%)
Successfully installed rails-5.2.1
3 gems installed
root@DESKTOP-0EGOP77:~# rails -v
Rails 5.2.1

アプリケーションの新規作成

1.4節に記載の通り進めればよいがエラーは出た。
記録を残していないのだが、bundle install でエラーが出た。その時に以下コマンドを打って解決した。
sudo apt-get install pkg-config

実行

1.5節に記載の通り進めればよいのだが、ここでもエラーがでる。
これも記録に残していないのがだ、Gemfileにmini_racerについてコメントアウトされている行をコメントアウト解除し、再度bundle installすることで対処できる。
以下サイトでは解消しないとも書いてあるけど今のところ大丈夫みたい。

まとめ

2024/2/18現在で辛うじて開発環境の構築はできたので、負けないように最後まで作ってみる。
15章まで先は長いが、写経のように綴っていこうと思う。



この記事が気に入ったらサポートをしてみませんか?