Railsチュートリアルのサンプルをローカルに構築した際のエラーとの格闘と解決

# はじめに
プログラミング初学者の[@kat_log](https://twitter.com/kat__log "Twitter")と申します。

railsチュートリアル（第6版）のコードサンプルをGitHubからフォークして、ローカルに構築しようとした時に色々なエラーと格闘して、解決したためその流れを記録＆共有です。
（README.mdを元に「第6版の11章を動かす」までの流れです。）

# 流れ
1. 本リポジトリをクローンし、該当のディレクトリへ移動します。
→問題なく実行できました
1. 必要なパッケージをインストールし、bundle install(本番環境でのみ必要なgemはスキップ)します。
→問題なく実行できました
1. データベースを移行します。
→ここで躓きました😅

# エラーとの戦い
ここから長い戦いとなりました💦
## rake-12.3.3がありません😭
「3.データベースを移行します。」の`rails db:migrate`を実行すると、

```
Could not find rake-12.3.3 in any of the sources
Run `bundle install` to install missing gems.
```
という`rake-12.3.3`が見つからないというエラーが出ました。
なので、メッセージ内にある通り`bundle install`を実行しました。

## 非互換のrubyバージョンです😭
すると次は

```
ruby_dep-1.5.0 requires ruby version >= 2.2.5, ~> 2.2, which is incompatible with the current version,
ruby 3.0.1p64
```
というrubyのバージョンに関するエラーが出ました。

## bundlergemのバージョンを合わせても変わらず
railsチュートリアルに
>[経験上、リスト 1.3で示すようにbundlergemのバージョンも揃えておくとよいことがわかっています。](https://railstutorial.jp/chapters/beginning?version=6.0#sec-installing_rails "経験上、リスト 1.3で示すようにbundlergemのバージョンも揃えておくとよいことがわかっています。")

とあるため、「bundlergemのバージョンが違うからかも」と思いrailsチュートリアル同様2.2.17に変えて（それまで2.2.15でした）`bundle install`を再度行うも、同じく

```
ruby_dep-1.5.0 requires ruby version >= 2.2.5, ~> 2.2, which is incompatible with the current version,
ruby 3.0.1p64
```
となりました。

（↓参考：特定のバージョンにて`bundle install`する方法があるようです）

https://qiita.com/YumaInaura/items/64e5721549e4927ce85f

## ruby2系を入れてみる
`rbenv versions`でローカルにインストールしているrubyを確認すると、3.0.1しか入っていなかったので、
`rbenv install 2.7.3`にて2系をインストールし、
`rbenv global 2.7.3`にて2.7.3を使うようにしました。

https://prog-8.com/docs/ruby-env

## railsコマンドが見つかりません😭
再び`bundle install`実行すると、次は

```
rbenv: rails: command not found

The `rails' command exists in these Ruby versions:
  3.0.1
```
となりました。2.7.3の方にrailsが入っていないようです。

## mimemagicエラー
ここで自分は、railsチュートリアルサンプルコードの例の「2.必要なパッケージをインストールし、bundle install(本番環境でのみ必要なgemはスキップ)します。」からもう一回やってみようと思い

```
$ yarn add jquery@3.4.1 bootstrap@3.4.1
$ bundle install --without production
```
を実行しました。すると元々出ていなかった

```
Installing mimemagic 0.3.10 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

An error occurred while installing mimemagic (0.3.10), and Bundler cannot continue.
Make sure that `gem install mimemagic -v '0.3.10' --source 'https://rubygems.org/'` succeeds before
bundling.
```
というエラーが発生しました💧

## The rails' command exists in these Ruby versions:エラー解消できず😭
その後、一旦新たに発生したエラーは置いておいて、その前に発生していた
`The rails' command exists in these Ruby versions:`のエラー解消のため、

```
$ gem update --system
$ gem install bundler
$ gem install rails
```
を実行しました。
（↓参考）

https://qiita.com/kamillle/items/5a7befd0ebad47378832

実行後railsのインストールができたか`rails --version `にて確認しましたが、次は

```
Could not find rails-6.0.3, bcrypt-3.1.13
〜　一部省略で記載しています　〜
Run `bundle install` to install missing gems.
```
といったエラーが発生しました💧

## 再度bundle installするも失敗
そこでエラーメッセージにある通り再度`bundle install`しました。
が、またも、、、

```
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
〜　一部省略で記載しています　〜
An error occurred while installing mimemagic (0.3.10), and Bundler cannot continue.
```
というエラーとなりました。
（↑上の方で`$ bundle install --without production`した時に新たに発生したエラーがそのまま出ているようです）

## shared-mime-infoをインストール
そこで、再度調べた情報を元に
`brew install shared-mime-info`
コマンドにて「shared-mime-info」をインストールし、再度
`bundle install `をしてみました

（↓参考）

https://qiita.com/yoshiki_murakami/items/d85c4de4a22cddf06dc4

## No such file or directory発生
すると次は

```
/Users/xxxxxx/.rbenv/shims/bundle: line 21: /usr/local/Cellar/rbenv/1.1.2/libexec/rbenv: No such file or directory
```
ということでディレクトリが見つかりませんというエラーが発生しました💧

## rbenv rehashで事態が前進💪
ということでさらに調べた結果、

```
rbenv rehash
```
を実行すると`bundle install`がうまく実行できるようになりました。
その結果、

```
$ rails --version
Rails 6.0.3
```
railsが入りました！

ちなみにrubyのバージョンを見ると

```
$ ruby -v

ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-darwin20]
```
ということで2系になっています

（↓参考）

https://codenote.net/ruby/4988.html

## Yarnのエラー
当初の目的通り、railsチュートリアルの`rails db:migrate`を実行すると

```
warning Integrity check: System parameters don't match                                               
error Integrity check failed                                                                         
error Found 1 errors.                                                                                


========================================
  Your Yarn packages are out of date!
  Please run `yarn install --check-files` to update.
========================================


To disable this check, please change `check_yarn_integrity`
to `false` in your webpacker config file (config/webpacker.yml).


yarn check v1.22.17
info Visit https://yarnpkg.com/en/docs/cli/check for documentation about this command.
```
ということでまたもエラーが発生しました💦

## ようやく解決へ
こちらに関しては、

```
yarn install --check-files
```
を実行することで`rails db:migrate`が実行できるようになりました！

これだけだとCSSがうまく機能しないことがあるようで、その場合

```
yarn upgrade
```
も実行すると良いようです！

（↓参考）

https://qiita.com/nakki/items/4fa58cb6ff4d6c24c2d2

## 
これにてようやく解決し、

```
rails db:migrate
```
の実行、

```
rails test
rails db:seed
rails s
```
にてサーバー起動後`http://localhost:3000/`にアクセスしてサンプルを動かすことができました！

![Screen Shot 2021-12-16 at 6.07.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1455073/77c33228-6de9-6895-70b6-eff649a1ae61.png)


# おわりに
お読みいただきありがとうございました。
この記事が誰かのお役に立てるかは微妙ですが、エラーとの戦いの記録として残しました😅
初学者の方々、一緒に頑張っていきましょう〜😄