現場で使えるRuby on Rails5における環境構築

# はじめに

「現場で使えるRuby on Rails5」における環境構築を行った際にエラーが出て少し手こずったのでここにまとめます。
自分もこの教材を取り掛かろうと思った際に、RubyやRailsのバージョンが古かったり、すでにサポートが終了していたりと結構戸惑うことがあったので、自分と同じような境遇の人を一人でも救えればなと思い、本記事を書きました！
初めて記事を投稿するので、みづらい点など多々あると思いますがお手柔らかによろしくお願いいたします🙇
# エラー
今回は`Railsのバージョンを5.2.6`で進めていきます！
書籍の指示とは異なりますが、`gem install rails -v 5.2.6`とバージョンを指定してインストールしてください。（※バージョンの指定が無い場合は最新版を取得してしまいますが、書籍通りに動かないことがあるみたいです。）

そして上記の通りのコードを実行した際にエラーが発生。。。
```terminal
gem install rails -v 5.2.6
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    bad response Forbidden 403 (https://api.rubygems.org/quick/Marshal.4.8/nokogiri-1.14.2-x64-unknown.gemspec.rz)
```
# 対処法
しばらく考えたのですが、そういえば、「`gem install rails -v 5.2.6`実行時にM1Macで上記のようなメッセージが出てうまくインストール出来ないという報告がある」とスクールの講師の方が言っていたのを思い出しました！(なんか怪しくてすみません😅笑)

その際は`gem install nokogiri -v 1.12.5`を行なってから、`gem install rails -v 5.2.6`を実行すると成功のこと。
果たして・・・
```terminal
 % gem install nokogiri -v 1.12.5
Building native extensions. This could take a while...
Successfully installed nokogiri-1.12.5
Parsing documentation for nokogiri-1.12.5
Installing ri documentation for nokogiri-1.12.5
Done installing documentation for nokogiri after 10 seconds
1 gem installed

% gem install rails -v 5.2.6
Fetching: rails-dom-testing-2.0.3.gem (100%)
Successfully installed rails-dom-testing-2.0.3
Fetching: crass-1.0.6.gem (100%)
Successfully installed crass-1.0.6
Fetching: loofah-2.20.0.gem (100%)
Successfully installed loofah-2.20.0
Fetching: rails-html-sanitizer-1.5.0.gem (100%)
Successfully installed rails-html-sanitizer-1.5.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.6.gem (100%)
Successfully installed actionview-5.2.6
Fetching: rack-2.2.6.4.gem (100%)
Successfully installed rack-2.2.6.4
Fetching: rack-test-2.1.0.gem (100%)
Successfully installed rack-test-2.1.0
Fetching: actionpack-5.2.6.gem (100%)
Successfully installed actionpack-5.2.6
Fetching: sprockets-4.2.0.gem (100%)
Successfully installed sprockets-4.2.0
Fetching: sprockets-rails-3.4.2.gem (100%)
Successfully installed sprockets-rails-3.4.2
Fetching: bundler-2.4.10.gem (100%)
ERROR:  Error installing rails:
	The last version of bundler (>= 1.3.0) to support your Ruby & RubyGems was 2.3.26. Try installing it with `gem install bundler -v 2.3.26` and then running the current command again
	bundler requires Ruby version >= 2.6.0. The current ruby version is 2.5.0.
```
またエラーが出ましたね。。。
エラー文を翻訳すると、

```terminal
ERROR: railsのインストールにエラーが発生しました：
あなたのRubyとRubyGemsをサポートするbundlerの最後のバージョン(>= 1.3.0)は2.3.26です。
gem install bundler -v 2.3.26でインストールし、もう一度現在のコマンドを実行してみてください。
bundlerを使用するには、Rubyのバージョン >= 2.6.0が必要です。現在のrubyのバージョンは2.5.0です。
```
察するに、BundlerのバージョンとRubyのバージョンが低いみたいですね。
本書ではRubyの推奨バージョンが2.5.1となっていたためそのままインストールを行なっていたのですが、どうにもBundlerがインストールできなさそうなのでバージョンを上げてみます。
[Ruby公式ドキュメント](https://www.ruby-lang.org/ja/downloads/)を参考に2.6.10のバージョンを設定しました！
```terminal
% rbenv global 2.6.10           
% rbenv local 2.6.10            
% ruby -v           
ruby 2.6.10p210 (2022-04-12 revision 67958) [arm64-darwin22]
```
Rubyのバージョンは変更できたので、今度はBundlerをインストールしてみます。
```terminal
% gem install bundler -v 2.3.26
Fetching bundler-2.3.26.gem
Successfully installed bundler-2.3.26
Parsing documentation for bundler-2.3.26
Installing ri documentation for bundler-2.3.26
Done installing documentation for bundler after 0 seconds
1 gem installed
```
成功しました✨
それでは再度`gem install rails -v 5.2.6 `を実行してみます。
```terminal
% gem install rails -v 5.2.6 
Fetching nokogiri-1.14.2-arm64-darwin.gem
Fetching activesupport-5.2.6.gem
Fetching tzinfo-1.2.11.gem
Fetching thread_safe-0.3.6.gem
Fetching racc-1.6.2.gem
Fetching concurrent-ruby-1.2.2.gem
Fetching i18n-1.12.0.gem
Fetching rails-dom-testing-2.0.3.gem
Fetching crass-1.0.6.gem
Fetching rails-html-sanitizer-1.5.0.gem
Fetching erubi-1.12.0.gem
Fetching builder-3.2.4.gem
Fetching actionview-5.2.6.gem
Fetching actionpack-5.2.6.gem
Fetching loofah-2.20.0.gem
Fetching sprockets-4.2.0.gem
Fetching sprockets-rails-3.4.2.gem
Fetching method_source-1.0.0.gem
Fetching thor-1.2.1.gem
Fetching rack-2.2.6.4.gem
Fetching rack-test-2.1.0.gem
Fetching railties-5.2.6.gem
Fetching marcel-1.0.2.gem
Fetching arel-9.0.0.gem
Fetching activemodel-5.2.6.gem
Fetching activerecord-5.2.6.gem
Fetching activestorage-5.2.6.gem
Fetching websocket-extensions-0.1.5.gem
Fetching websocket-driver-0.7.5.gem
Fetching actioncable-5.2.6.gem
Fetching globalid-1.1.0.gem
Fetching activejob-5.2.6.gem
Fetching mini_mime-1.1.2.gem
Fetching net-protocol-0.2.1.gem
Fetching nio4r-2.5.9.gem
Fetching net-imap-0.3.4.gem
Fetching mail-2.8.1.gem
Fetching actionmailer-5.2.6.gem
Fetching timeout-0.3.2.gem
Fetching rails-5.2.6.gem
Fetching net-smtp-0.3.3.gem
Fetching net-pop-0.1.2.gem
Successfully installed concurrent-ruby-1.2.2
Successfully installed thread_safe-0.3.6
Successfully installed tzinfo-1.2.11
Successfully installed i18n-1.12.0
Successfully installed activesupport-5.2.6
Building native extensions. This could take a while...
Successfully installed racc-1.6.2
ERROR:  Error installing rails:
	The last version of nokogiri (>= 1.6) to support your Ruby & RubyGems was 1.13.10. Try installing it with `gem install nokogiri -v 1.13.10` and then running the current command again
	nokogiri requires Ruby version >= 2.7, < 3.3.dev. The current ruby version is 2.6.10.210.
```
またエラーが出てるじゃありませんか・・・
初学者に追撃喰らわせるんじゃありませんほんと、、、
でもエラー文がそのまま答えになってることが本当に多いので焦らず対応していきます！

再度エラー文を翻訳してみると、
```
ERROR: railsのインストールにエラーが発生しました：
お使いのRubyとRubyGemsをサポートするnokogiri (>= 1.6)の最終バージョンは1.13.10です。
gem install nokogiri -v 1.13.10`でインストールし、もう一度現在のコマンドを実行してみてください。
nokogiri は Ruby のバージョン >= 2.7, < 3.3.dev を必要とします。現在のrubyのバージョンは2.6.10.210です。
```
冒頭では、`gem install nokogiri -v 1.12.5`すれば大丈夫的なことを言っていたのですが、結局ターミナルからは`gem install nokogiri -v 1.13.10`をしてくれと言われる始末。

大人しく従います。はい。笑

```terminal
 % gem install nokogiri -v 1.13.10
Fetching nokogiri-1.13.10-arm64-darwin.gem
Successfully installed nokogiri-1.13.10-arm64-darwin
Parsing documentation for nokogiri-1.13.10-arm64-darwin
Installing ri documentation for nokogiri-1.13.10-arm64-darwin
Done installing documentation for nokogiri after 1 seconds
1 gem installed
```

そして、そのまま`gem install rails -v 5.2.6 `を実行（3度目の正直）
```ter
 % gem install rails -v 5.2.6     
Successfully installed rails-dom-testing-2.0.3
Successfully installed crass-1.0.6
Successfully installed loofah-2.20.0
Successfully installed rails-html-sanitizer-1.5.0
Successfully installed erubi-1.12.0
Successfully installed builder-3.2.4
Successfully installed actionview-5.2.6
Successfully installed rack-2.2.6.4
Successfully installed rack-test-2.1.0
Successfully installed actionpack-5.2.6
Successfully installed sprockets-4.2.0
Successfully installed sprockets-rails-3.4.2
Successfully installed method_source-1.0.0
Successfully installed thor-1.2.1
Successfully installed railties-5.2.6
Successfully installed marcel-1.0.2
Successfully installed arel-9.0.0
Successfully installed activemodel-5.2.6
Successfully installed activerecord-5.2.6
Successfully installed activestorage-5.2.6
Successfully installed websocket-extensions-0.1.5
Building native extensions. This could take a while...
Successfully installed websocket-driver-0.7.5
Building native extensions. This could take a while...
Successfully installed nio4r-2.5.9
Successfully installed actioncable-5.2.6
Successfully installed globalid-1.1.0
Successfully installed activejob-5.2.6
Successfully installed mini_mime-1.1.2
Successfully installed timeout-0.3.2
Successfully installed net-protocol-0.2.1
Successfully installed net-smtp-0.3.3
Successfully installed net-imap-0.3.4
Successfully installed net-pop-0.1.2
Successfully installed mail-2.8.1
Successfully installed actionmailer-5.2.6
Successfully installed rails-5.2.6
Parsing documentation for rails-dom-testing-2.0.3
Installing ri documentation for rails-dom-testing-2.0.3
Parsing documentation for crass-1.0.6
Installing ri documentation for crass-1.0.6
Parsing documentation for loofah-2.20.0
Installing ri documentation for loofah-2.20.0
Parsing documentation for rails-html-sanitizer-1.5.0
Installing ri documentation for rails-html-sanitizer-1.5.0
Parsing documentation for erubi-1.12.0
Installing ri documentation for erubi-1.12.0
Parsing documentation for builder-3.2.4
Installing ri documentation for builder-3.2.4
Parsing documentation for actionview-5.2.6
Installing ri documentation for actionview-5.2.6
Parsing documentation for rack-2.2.6.4
Installing ri documentation for rack-2.2.6.4
Parsing documentation for rack-test-2.1.0
Installing ri documentation for rack-test-2.1.0
Parsing documentation for actionpack-5.2.6
Installing ri documentation for actionpack-5.2.6
Parsing documentation for sprockets-4.2.0
Installing ri documentation for sprockets-4.2.0
Parsing documentation for sprockets-rails-3.4.2
Installing ri documentation for sprockets-rails-3.4.2
Parsing documentation for method_source-1.0.0
Installing ri documentation for method_source-1.0.0
Parsing documentation for thor-1.2.1
Installing ri documentation for thor-1.2.1
Parsing documentation for railties-5.2.6
Installing ri documentation for railties-5.2.6
Parsing documentation for marcel-1.0.2
Installing ri documentation for marcel-1.0.2
Parsing documentation for arel-9.0.0
Installing ri documentation for arel-9.0.0
Parsing documentation for activemodel-5.2.6
Installing ri documentation for activemodel-5.2.6
Parsing documentation for activerecord-5.2.6
Installing ri documentation for activerecord-5.2.6
Parsing documentation for activestorage-5.2.6
Installing ri documentation for activestorage-5.2.6
Parsing documentation for websocket-extensions-0.1.5
Installing ri documentation for websocket-extensions-0.1.5
Parsing documentation for websocket-driver-0.7.5
Installing ri documentation for websocket-driver-0.7.5
Parsing documentation for nio4r-2.5.9
Installing ri documentation for nio4r-2.5.9
Parsing documentation for actioncable-5.2.6
Installing ri documentation for actioncable-5.2.6
Parsing documentation for globalid-1.1.0
Installing ri documentation for globalid-1.1.0
Parsing documentation for activejob-5.2.6
Installing ri documentation for activejob-5.2.6
Parsing documentation for mini_mime-1.1.2
Installing ri documentation for mini_mime-1.1.2
Parsing documentation for timeout-0.3.2
Installing ri documentation for timeout-0.3.2
Parsing documentation for net-protocol-0.2.1
Installing ri documentation for net-protocol-0.2.1
Parsing documentation for net-smtp-0.3.3
Installing ri documentation for net-smtp-0.3.3
Parsing documentation for net-imap-0.3.4
Installing ri documentation for net-imap-0.3.4
Parsing documentation for net-pop-0.1.2
Installing ri documentation for net-pop-0.1.2
Parsing documentation for mail-2.8.1
Installing ri documentation for mail-2.8.1
Parsing documentation for actionmailer-5.2.6
Installing ri documentation for actionmailer-5.2.6
Parsing documentation for rails-5.2.6
Installing ri documentation for rails-5.2.6
Done installing documentation for rails-dom-testing, crass, loofah, rails-html-sanitizer, erubi, builder, actionview, rack, rack-test, actionpack, sprockets, sprockets-rails, method_source, thor, railties, marcel, arel, activemodel, activerecord, activestorage, websocket-extensions, websocket-driver, nio4r, actioncable, globalid, activejob, mini_mime, timeout, net-protocol, net-smtp, net-imap, net-pop, mail, actionmailer, rails after 23 seconds
35 gems installed
% rails -v
Rails 5.2.6
```
なんとかRailsのバージョンを設定することができました！
これでどうにかアプリーケーションの雛形を作っていけそうです。
# まとめ
今回、「現場で使えるRuby on Rails5」における環境構築を行った際のエラーについて取り上げていきました。
Railsを学ぶ際の良書なのでこれからも重宝させていただきます✨

話変わって、初学者にとって環境構築でのエラー文って恐怖でしかないと思います。
僕も学習初めて1年未満ですが、公式ドキュメントを読んだりし始めたのは最近なので、気持ちがすごいわかります。
しかし、一回落ち着いて翻訳してみたり、ググることで解決するヒントが見つかることも本当に多いんです。
なので、エラーで「強く〜なれる〜理由を知った」っと言えるくらいこれからもひた向きに立ち向かっていきましょう🔥
最後まで見てくださりありがとうございました！！

# 参考文献
https://www.ruby-lang.org/ja/downloads/

https://github.com/rbenv/rbenv#using-package-managers