発生した背景
久々にアプリケーションを起動しようとしたところ、アプリが起動しない。
※こちらは「サーバが起動しないこと」の記事を連載しています。
以下のエラーが発生しました:
Traceback (most recent call last):
61: from bin/rails:3:in `<main>'
60: from bin/rails:3:in `load'
------- 一部割愛
3: from /Users/ichikawadaisuke/projects/krown/vendor/ruby/2.5.0/gems/bootsnap-1.4.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
2: from /Users/ichikawadaisuke/projects/krown/vendor/ruby/2.5.0/gems/execjs-2.7.0/lib/execjs.rb:4:in `<main>'
1: from /Users/ichikawadaisuke/projects/krown/vendor/ruby/2.5.0/gems/execjs-2.7.0/lib/execjs.rb:5:in `<module:ExecJS>'
/Users/ichikawadaisuke/projects/krown/vendor/ruby/2.5.0/gems/execjs-2.7.0/lib/execjs/runtimes.rb:58:in `autodetect': Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
対応方法
- ①ローカルで「bundle install --path vendor」を実施してみる
Fetching libv8 3.16.14.19
Installing libv8 3.16.14.19 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
In file included from ../src/allocation.cc:33:
../src/utils.h:33:10: fatal error: 'climits' file not found
#include <climits>
^~~~~~~~~
1 error generated.
(省略)
上記のエラーが発生する。
- ②エラー文言の指示に従い、以下のコマンドを実行する
CMD> gem install libv8 -v '3.16.14.19' --source 'https://rubygems.org/'
①と同じエラーメッセージが出力され、コマンドに失敗する。
- ③現在、mac-osは「Catalina v10.15.4」を使用している。調べたところ下位互換性がないとの情報があったため、以下コマンドを実行し、互換性をとる。
CMD> brew install v8-315
brewコマンドを実行し、インストールしたので、ローカルアプリケーションの設定を変更します。
CMD>bundle config --local build.therubyracer --with-v8-dir=$(brew --prefix v8-315)
最後にbudleインストールをローカルで実行しました。
問題が解決し、Railsサーバが起動出来るようになりました。