##前提条件
ruby '2.5.0'
Rails '5.1.4'
#mini_racerを使おう
先日MacのOSアップデート後、rails serverを立ち上げようとしたところ、Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
と怒られてしまった。
どうやら、Javascriptを実行するために必要なランタイム(ソフトウェアの実行に必要なプログラム)がないぞということらしい。
エラーメッセージには、https://github.com/rails/execjs と利用可能なランタイムの一覧のリンクまで表示してくれてある。
親切。
ただリンクの一覧にあるtherubyracer
はトラップだった。
導入を進めている他の記事も多いけど、自分の前提条件だと、このgemをbundle installしようとしたところ、
An error occurred while installing libv8 (3.16.14.19), and Bundler cannot continue.
Make sure that `gem install libv8 -v '3.16.14.19' --source 'https://rubygems.org/'` succeeds before bundling.
In Gemfile:
therubyracer was resolved to 0.12.3, which depends on
libv8
という具合にエラーを返された。
代わりに、
gem 'mini_racer'
をbundle installしよう。
どうやらtherubyracer
は、2017年にすでに終わっていたらしい。
参照記事:Railsの難所についてと、therubyracerはすでに終わっていた話
therubyracerは内部的にlibv8というgemを使ってv8エンジン(Javascriptの実行エンジン)をインストールしようと試みる。しかし、therubyracerが扱っているlibv8のバージョンが古く、結果としてインストールが困難な上に脆弱性の問題も抱えていた。
(中略)
mini_racerはかなり新しいlibv8をハンドリングしている。試してみた所簡単にインストールが成功した。最新のv8の方が安定・高速なので、パフォーマンス的にも美味しい。
##結論
gem 'mini_racer'
をbundleしよう。
##宣伝