execjs が入っていれば無理に libv8 関連の gem を入れなくても良いっぽい。

概要

  • タイトルで全部言っているんだけど、 therubyracermini_racerlibv8libv8-node あたりの消耗しがちなやつや問題が起きがちなやつは execjs が入っていればそもそも使わなくていいらしい。

詳細

execjs の README には以下のように書いてある。

ExecJS lets you run JavaScript code from Ruby. It automatically picks the best runtime available to evaluate your JavaScript program, then returns the result to you as a Ruby object.

ExecJS supports these runtimes:

要するに、システムにある一番よさそうな JavaScript 実行環境を良い感じに選んで使うよ、ということで Node.js があればそれ使ってくれる。

大抵の Web アプリ製作現場ではバージョン管理された Node.js を nodenv 等で入れていることだろうし、実行環境にも Node.js は入れるだろうし、その方が筋が良い。

mini_racer は環境によってはセグフォする…。

前の記事 で書いた話なのだが

内容的には この issue の話なのだが、 fork してマルチプロセスになると、プロセス終了時にセグフォするという問題がある。

について、 このログ が出力された後に segmentation fault で落ちていくという現象に悩んでいたのだが、そもそも使わなければ問題が起きないという完全に根本的な解決に至った。

締め

Web のアプリ開発も難しいですね。