Mojaveで渡された古いRails動かそうとしたらbundlerコケるので備忘録。
cloneしてきて魔法の呪文、bundle install --path vendor/bundle
を唱えると、、、コケる。
ので、コケたのに対して、淡々とオプションを指定してひたすら逃げていく。
homebrew?
homebrew?そんなの使うわけないでしょ。
調べててhomebrew前提の何の解決もしてないノイズ記事が多すぎてつらかった、、、、、、、
備忘録。
みんな嫌いなnokogiriわかる。libxml2を指定すればイケた。
bundle config --local build.nokogiri --use-system-libraries --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/libxml2 --with-xml2-lib=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/libxml2
bundle config --local build.libv8 --with-system-v8
つづいて、libOpenSSLがないっぽいので、ビルドして入れておく。要らなかったかも?
https://www.openssl.org/source/
さらにmysqlの古いのも入れる。
rails3.2はmysql2の0.3系しかダメらしく、mysql2の0.3系はmysqlの8ではビルドが通らない。
幸いにmojaveにはmysql 5.7.24が入るらしいので、dmgから。
https://dev.mysql.com/downloads/file/?id=481129
で、そいつを使うべく試行錯誤の末が以下。
bundle config --local build.mysql2 --with-mysql-config=/usr/local/mysql-5.7.24-macos10.14-x86_64/bin/mysql_config --with-ldflags=-L/usr/local/mysql-5.7.24-macos10.14-x86_64/lib
otool -L vendor/bundle/ruby/2.1.0/extensions/x86_64-darwin-18/2.1.0-static/mysql2-0.3.21/mysql2/mysql2.bundle
で確認してリンクされてるライブラリがlibmysqlclient.20.dylib
になってればOK。21.dylibだと新しい方。
bundle update libv8
therubyracerのやつ。さっぱりわからんが
Fetching libv8 3.16.14.19 (x86_64-darwin-18) (was 3.16.14.17)
Installing libv8 3.16.14.19 (x86_64-darwin-18) (was 3.16.14.17)
で新しくなってビルド通った。
bundle exec rails server
で動いた。
ら、終わり。
正直、、、
こんな無駄な事に苦労するくらいだったらrailsのバージョンあげたほうがいいと思う、、、
動いてよかった。