よくある話題ですが情報が散らばってるので対応策をまとめておきます。
エラー内容
therubyracer
が Gemfile に記述されている状態でbundle install
を実行すると以下のエラーでインストールできません。libv8
はtherubyracer
の依存関係でインストールされます。
2 errors generated. make[1]: *** [/Users/tasukujp/testapp/.bundle/ruby/2.3.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/v8_base/src/accessors.o] Error 1 make: *** [x64.release] Error 2 /Users/tasukujp/Documents/testapp/.bundle/ruby/2.3.0/gems/libv8-3.16.14.13/ext/libv8/location.rb:36:in `block in verify_installation!': libv8 did not install properly, expected binary v8 archive '/Users/tasukujp/Documents/testapp/.bundle/ruby/2.3.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a'to exist, but it was not found (Libv8::Location::Vendor::ArchiveNotFound) from /Users/tasukujp/testapp/.bundle/ruby/2.3.0/gems/libv8-3.16.14.13/ext/libv8/location.rb:35:in `each' from /Users/tasukujp/testapp/therubyracer/.bundle/ruby/2.3.0/gems/libv8-3.16.14.13/ext/libv8/location.rb:35:in `verify_installation!' from /Users/tasukujp/testapp/therubyracer/.bundle/ruby/2.3.0/gems/libv8-3.16.14.13/ext/libv8/location.rb:26:in `install!' from extconf.rb:7:in `<main>' ... An error occurred while installing libv8 (3.16.14.13), and Bundler cannot continue. Make sure that `gem install libv8 -v '3.16.14.13'` succeeds before bundling.
今回試したOSのバージョンは以下の通りです。
$ sw_vers ProductName: Mac OS X ProductVersion: 10.11.6 BuildVersion: 15G1217 $ ruby -rubygems -e 'puts Gem::Platform.new(RUBY_PLATFORM)' x86_64-darwin-15
最新バージョンのlibv8を使用
手っ取り早い解決法はlibv8
のバージョンを上げることでした。Gemfile.lock
を参照すると以下のような形式になっているかと思います。libv8
の3.16.14.13
を3.16.14.15
や3.16.14.19
に上げる事で正常にインストール可能です。
libv8 (3.16.14.13) ... therubyracer (0.12.2) libv8 (~> 3.16.14.0) ref
v8-315を使用
既存プロジェクトでGemfile.lock
のバージョン変えれないという方はv8-315
をインストールしてGemインストール時に使用するように指定してください。
$ brew tap homebrew/versions $ brew install v8-315 # libv8をインストールする場合に必要 $ bundle config --local build.libv8 --with-system-v8 # therubyracerをインストールする場合に必要 $ bundle config --local build.therubyracer --with-v8-dir=/usr/local/opt/v8-315 $ bundle install
そもそもtherubyracerって何?
therubyracer の事や libv8 の関係は以下のリンク先など参照して下さい。
therubyracer considered harmful - なるせにっき
なぜRailsでtherubyracerのコメントを外さなきゃいけないのか - kz-engineer -SCRAP-
therubyracer 0.11.0 問題まとめ - 自称すーじー。
GitHub - cowboyd/libv8: Ruby gem binary distribution of the V8 JavaScript engine
GitHub - cowboyd/therubyracer: Embed the V8 Javascript Interpreter into Ruby