LoginSignup
0
0

More than 5 years have passed since last update.

El Capitanで therubyracer 0.11.4 をどうにかインストールしたかったけどできなかった

Last updated at Posted at 2016-10-04

El Capitanで therubyracer 0.11.4 をどうにかインストールしたかったけどできなかった

JaVaScriptエンジンである v8 をrubyで使えるようにするための therubyracer ですが、インストールにはいつも何かしら問題が起きます。

「therubyracer」で検索すると、インストールできなかった場合の対処法が1ページ目を占めるくらい利用者の頭を悩ますところですが、つい最近自分も悩んで結局解決できなかったので、それを書きとめます。

Rails4.0.0案件を動かしたかった

昔の案件で、
- Rails4.0.0
- ruby2.0.0

のプロジェクトを検証するために、ElCapitanで動かそうとしました。

この条件下では、therubyracerのバージョンを特に指定しなければ、0.11.4をインストールしようとします。最初、てっきりRails4.0.0では0.11.4しか動かない、と思い込んでいたのがそもそもの間違いでした。

ビルド時のオプションを指定しないとエラー

ソースコードを配置して
bundle install
をすると、therubyracerの箇所で以下のようなエラーになります。

(省略)
checking for v8.h... no
*** extconf.rb failed ***
(省略)

v8が見つからないと言われます。ただ、v8は入ってはいます。

ビルド時のオプションを指定してもエラー

を参考にすれば、世の中のtherubyracer問題のほとんどが解決できる気がします。
すなわち、ビルド時のパスを指定します。

bundle config --local build.libv8 --with-system-v8
bundle config --local build.therubyracer --with-v8-dir=/usr/local/opt/v8
or 
bundle config --local build.therubyracer --with-v8-dir=/usr/local/opt/v8-315

そして、bundle installすると

(省略)
checking for v8.h... yes
(省略)
2 warnings and 1 error generated.
make: *** [context.o] Error 1

v8は認識するようになりましたがエラーが起きました。

bundle update libv8

bundle config --local build.libv8 --with-cxx=/usr/local/bin/g++-4.2

をやってみても結果は同じでした。

諦めてtherubyracerを最新にする

0.11.4は古いため、最新の0.12.2を指定します。

$ vim Gemfile

gem 'therubyracer', :platforms => :ruby
↓
gem 'therubyracer', '>= 0.12.2', :platforms => :ruby

$ bundle install
...
Installing libv8 3.16.14.15 (was 3.11.8.17)
Installing therubyracer 0.12.2 (was 0.11.4) with native extensions
...
Bundle complete! 37 Gemfile dependencies, 118 gems now installed.

ついでにlibv8もアップグレードされ最新版が入り、問題なく完了しました。

そして、アプリを起動しても問題なく動きました。

結論

  • ElCapitanではtherubyracer0.11.4は入らない
  • Rails4.0.0でもtherubyracer0.12.2は動くので、バージョンアップすればいい
0
0
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
0
0