Rubyのバージョンアップ対応でめちゃくちゃはまった・・・
今更ながらRuby2.5.1からひとまず2.7.7(bundler 2.4.6)へ(この後3.2.0にアップデート予定)
開発環境では順調に進むものの、capistranoを使ったdeployがまったくうまくいかない・・・
インフラ系に弱いのでまじで泣きそうだったー
とくにmini_racerとかlibv8-nodeとか、ちょっと調べるといろんな人がはまっているところに同じようにはまりました
01 current directory:
01 /var/www/{appli}/shared/bundle/ruby/2.7.0/gems/mini_racer-0.6.3/ext/mini_racer_extension
01 make "DESTDIR="
01 compiling mini_racer_extension.cc
01 linking shared-object mini_racer_extension.so
01 g++: エラー:
01 /var/www/{appli}/shared/bundle/ruby/2.7.0/gems/libv8-node-16.10.0.0-x86_64-linux-musl/vendor/v8/x86_64-linux/libv8/obj/libv8_monolith.a:
01 No such file or directory
01 make: *** [mini_racer_extension.so] エラー 1
01
01 make failed, exit code 2
こんなんが出ればgcc系なのかなと思ったり、nodeのバージョンがおかしいのかな?とか、
gemを直接インストールしてみたり、何をやったか思い出せないほどに迷走しまくるもエラーは何も変わらず・・・
An error occurred while installing mini_racer (0.6.3), and Bundler
cannot continue.
In Gemfile:
mini_racer
bundle stderr: Nothing written
bundlerのバージョンがあっていないとエラーになるという記事は見かけたものの、エラーログからはちゃんと指定したバージョンのbundlerを使っているようにしかみえないし、、、
/usr/local/rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/bundler-2.4.6/lib/bundler/worker.rb:90:in
`block (2 levels) in create_threads'
最終的に解決したのはbundlerのバージョンでした・・・
サーバーにてgem listを確認
bundler (2.4.6, default: 2.1.4, 1.16.4)
もしかしてdefaultのほうが邪魔してるのかな?
という疑問は持っていたけど、logには2.4.6って書いてあるし違うだろと決めつけていました
結局
gem update --system
を実行して
bundler (default: 2.4.6, 1.16.4)
このような綺麗な状態になり、deployしたらようやく進んだ!!!
これだけのために2,3日使ってしまった・・・
インフラ苦手
誰か助けてー