【備忘録】【エラー解決】rails aborted! LoadError: dlopen

＄　rails new アプリ名 -d mysql
で新しいアプリを作成しようとした際に、以下のようなエラーが発生したため備忘録として残しておきます。
(こちらの記事を参考にさせていただきました。https://qiita.com/sato__yusuke/items/986aa0a63af28a8b6273)


# エラー内容
rails aborted!
LoadError: dlopen(/Users/ユーザー名/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle, 9): Library not loaded: /usr/local/opt/mysql@5.7/lib/libmysqlclient.20.dylib
  Referenced from: /Users/ユーザー名/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle
  Reason: image not found - /Users/ユーザー名/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle
/Users/ユーザー名/project/アプリ名/config/application.rb:7:in `<main>'
/Users/ユーザー名/project/アプリ名/Rakefile:4:in `<main>'
/Users/ユーザー名/project/アプリ名/bin/rails:5:in `<top (required)>'
/Users/ユーザー名/project/アプリ名/bin/spring:10:in `block in <top (required)>'
/Users/ユーザー名/project/アプリ名/bin/spring:7:in `tap'
/Users/ユーザー名/project/アプリ名/bin/spring:7:in `<top (required)>'
bin/rails:2:in `load'
bin/rails:2:in `<main>'
(See full trace by running task with --trace)

上記エラー内容を解読すると、
find / usr -name'libmysqlclient.20.dylib ファイルが、無いという内容であることがわかった。

# find /usr -name コマンドで「libmysqlclient.20.dylib」を探す
$ find /usr -name 'libmysqlclient.20.dylib'
　【結果】
find: /usr/sbin/authserver: Permission denied
Permission deniedが表示された。

# bundle doctorコマンドで各情報の表示&トラブルを診断
$ bundle doctor　（※cd アプリ名で、予めカレントディレクトリをアプリに変更しておかないと正しく表示されないため注意。）
【結果】
The following gems are missing OS dependencies:
 * mysql2: /usr/local/opt/mysql@5.7/lib/libmysqlclient.20.dylib

上記エラー内容を確認すると、
「The following gems are missing OS dependencies:」
つまり以下のgemたちは、OSへの依存関係がありません：と出ている。

そのため出ているgemsをアンインストールしていく。

# bundle exec gem uninstall [gem名]コマンド
$ bundle exec gem uninstall mysql2
【結果】
Successfully uninstalled mysql2-0.5.3
アンインストール完了と表示された。

# 再度、bundle doctorを行う。
$ bundle doctor
【結果】
The following gems are missing
 * mysql2 (0.5.3)
Install missing gems with `bundle install`
とエラーが出るので、エラー内容が示すようにbundle installを行う。

# bundle installを実行する
$ bundle install
【結果】
Fetching gem metadata from https://rubygems.org/............
Using rake 13.0.3
Using concurrent-ruby 1.1.8
Using i18n 1.8.9
Using minitest 5.14.4
　　｜
　 省略
　　｜
An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'` succeeds before bundling.
上記のようなエラーが出たため、

$ gem install mysql2 --source 'https://rubygems.org/' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

で個別にmysql2のライブラリのインストールを“成功“させてから、

$ bundle install
を再度実行したところ、成功した。


# 最後にもう一度bundle doctor
$ bundle doctor
【結果】
No issues found with the installed bundle
「インストールされたbundleに問題なし」と表示されたため、解決です。


これで、元々やりたかった「rails sでサーバー立ち上げ」ができました！
ちなみに忘れないよう以下も記録。


（カレントディレクトリ：アプリ名にて・・・）
＄ rails db:create
railsのコマンドによるデータベースの作成

$ mysql -u root -p
MySQLの中に入る。Enter password:は、私の場合はパスワードを設定していないから何も入れずにENTER。

mysql> show databases;（MySQL内でコマンドを打つときは「；」をつける）
データベースの中身を表示。
+--------------------------+
| Database                 |
+--------------------------+
| information_schema       |
| アプリ名_development       |
| アプリ名_test              |
| mysql                    |
| performance_schema       |
| sys                      |
+--------------------------+
今作ったアプリがちゃんと入っている！

mysql> exit;
MySQLから出る。（カレントディレクトリ：アプリ名に戻る。）

rails db:migrate
マイグレーションを実行する。
（このタスクは、基本的にこれまで実行されたことのないchangeまたはupメソッドを実行）

＄ rails s
サーバーを立ち上げる

立ち上がりました！！感動の瞬間でした(^^)
![スクリーンショット 2021-03-20 15.22.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/985164/ea68c73c-b7c8-425f-eb7a-944821dcc5e7.png)