bundle installできない
$ bundle install
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/Users/naoya.ohsaki/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-18/2.6.0-static/mysql2-0.5.2/mkmf.log
extconf failed, exit code 1
Gem files will remain installed in /Users/naoya.ohsaki/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/mysql2-0.5.2 for
inspection.
Results logged to
/Users/naoya.ohsaki/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-18/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.
解決策の中でもググったものが使えない
$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
このコマンドは海外のさいとにもあるし、日本のエンジニアの方もあちこちで載せてくれているコマンドですが、私の場合、無反応でした。
$ cat /Users/ユーザー名/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-18/2.6.0-static/mysql2-0.5.2/mkmf.log
mkmf.logを見に行きます。
clang: error: unsupported option '--with-cppflags=-I/usr/local/opt/openssl/include'
と書いてあるので、さっきのコマンドのcppflagsオプションを外して、
$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
とし、
$ bundle install
してみます。
$ Bundle complete! 22 Gemfile dependencies, 85 gems now installed.
できました。
結論
mkmf.logを見にいくってのが大事なことです。
しかし、なんでこんな面倒なことが起こるのかというと、
結論としては、opensslのビルドオプションに問題があるからです。
どうやらmysql2のgemってのはC言語で書かれているみたいで、ビルドする際にオプション指定する必要があるみたいですね。他の記事では両方指定してやってることが多いですが、ログを見ると片方アンサポートになったようですねぇ。二つもいらんということなので変更されたってことなんでしょうね。