23
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ExecJS::RuntimeUnavailableの解決方法

Last updated at Posted at 2020-05-02

##前提条件
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しよう。

##宣伝

挫折しない英単語学習サービス「BooQs」を開発しています。

23
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?