【Ruby】軽い気持ちでアップデートしたらmySQL2が原因でbundle installができなくて絶望した。

一通り学習して「さあ組むぞ！」「せっかくだから最新版にしちゃえ！」と軽い気持ちでアップデートしたら「bundle install」でドスンと絶望したので、備忘録として残します。

##実行ログ

```
$ bundle install
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/............
Using rake 12.3.3
Using concurrent-ruby 1.1.5
Using i18n 1.6.0
Using minitest 5.11.3
Using thread_safe 0.3.6
Using tzinfo 1.2.5
Using activesupport 5.2.3
Using builder 3.2.3
Using erubi 1.8.0
Using mini_portile2 2.4.0
Using nokogiri 1.10.4
Using rails-dom-testing 2.0.3
Using crass 1.0.4
Using loofah 2.2.3
Using rails-html-sanitizer 1.2.0
Using actionview 5.2.3
Using rack 2.0.7
Using rack-test 1.1.0
Using actionpack 5.2.3
Using nio4r 2.5.1
Using websocket-extensions 0.1.4
Using websocket-driver 0.7.1
Using actioncable 5.2.3
Using globalid 0.4.2
Using activejob 5.2.3
Using mini_mime 1.0.2
Using mail 2.7.1
Using actionmailer 5.2.3
Using activemodel 5.2.3
Using arel 9.0.0
Using activerecord 5.2.3
Using mimemagic 0.3.3
Using marcel 0.3.3
Using activestorage 5.2.3
Using public_suffix 4.0.1
Using addressable 2.7.0
Using io-like 0.3.0
Using archive-zip 0.12.0
Using bindex 0.8.1
Using msgpack 1.3.1
Using bootsnap 1.4.5
Using bundler 1.17.2
Using byebug 11.0.1
Using regexp_parser 1.6.0
Using xpath 3.2.0
Using capybara 3.29.0
Using childprocess 2.0.0
Using chromedriver-helper 2.1.1
Using coffee-script-source 1.12.2
Using execjs 2.7.0
Using coffee-script 2.4.1
Using method_source 0.9.2
Using thor 0.20.3
Using railties 5.2.3
Using coffee-rails 4.2.2
Using ffi 1.11.1
Using jbuilder 2.9.1
Using rb-fsevent 0.10.3
Using rb-inotify 0.10.0
Using ruby_dep 1.5.0
Using listen 3.1.5
Fetching mysql2 0.5.2
Installing mysql2 0.5.2 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/ーー/.rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/mysql2-0.5.2/ext/mysql2
/Users/ーー/.rbenv/versions/2.6.4/bin/ruby -I /Users/ーー/.rbenv/versions/2.6.4/lib/ruby/2.6.0 -r ./siteconf20190930-59870-zfftb8.rb
extconf.rb --with-ldflags\=-L/usr/local/opt/openssl/lib
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for rb_wait_for_single_fd()... yes
checking for -lmysqlclient... no
-----
mysql client is missing. You may need to 'brew install mysql' or 'port install mysql', and try again.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=/Users/ーー/.rbenv/versions/2.6.4/bin/$(RUBY_BASE_NAME)
        --with-mysql-dir
        --without-mysql-dir
        --with-mysql-include
        --without-mysql-include=${mysql-dir}/include
        --with-mysql-lib
        --without-mysql-lib=${mysql-dir}/lib
        --with-mysql-config
        --without-mysql-config
        --with-mysql-dir
        --without-mysql-dir
        --with-mysql-include
        --without-mysql-include=${mysql-dir}/include
        --with-mysql-lib
        --without-mysql-lib=${mysql-dir}/lib
        --with-mysqlclientlib
        --without-mysqlclientlib

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /Users/ーー/.rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-17/2.6.0-static/mysql2-0.5.2/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /Users/ーー/.rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/mysql2-0.5.2 for inspection.
Results logged to /Users/ーー/.rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-17/2.6.0-static/mysql2-0.5.2/gem_make.out

An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  mysql2
```

##原因っぽそうな箇所を推測
```log:候補1
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
```
```log:候補2
mysql client is missing. You may need to 'brew install mysql' or 'port install mysql', and try again.
```
```log:候補3
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.
```

色々とエラー文で検索したりしてみましたが、結果手がかりとなったのは`「候補２」`のエラー文でした。
どうやらMACにmySQLがインストールできていなかったことが原因だったようです。。

こちらの方の記事を見つけました。
[mysql2 が原因でbundle installにてエラーを吐く(Mac OS X) - Qiita](https://qiita.com/shakemurasan/items/b6b733bf9052c38bb83e)


##解決方法

1.`brew install mysql`を実行。
2.`bundle install`を実行。
3.止まらないのキモチエエ！

##次回予告

開始早々初めて詰まったので、実行ログから原因を探っていく作業が新鮮でした。

別件でまた詰まったら・・・

1.とりあえずエラー文っぽい箇所を探す。（「not」などの否定形や、「faild」などネガティブワードを見つける）
2.とりあえずエラー文で検索してみる。
3.とりあえず色々試してみる。

この３本でお送りしよう。
今後の自分に役立ちそう！

##参考サイト
探求中に色々見つけたのでまとめ。

[bundle installでmysql2のgemがインストールできなかった時に試したこと - Qiita](https://qiita.com/unsoluble_sugar/items/1403ddf0ac9709b1aae6)
[mysql2 gemインストール時のトラブルシュート - Qiita](https://qiita.com/HrsUed/items/ca2e0aee6a2402571cf6)