Skip to content

El Capitanで bundle install および bundle exec rails consoleがうまく動かない時の対処法

ShuzoN edited this page Aug 4, 2016 · 5 revisions

環境

Mac OS X 10.11.3(El Capitan)  
bundler 1.11.2  
gem 2.4.5
rails 4.2.1

El CapitanにUpgrade後 bundle install 上手くいかない...

僕の場合は以下のgemが大きな原因でした.

  • libv8
  • spring
  • nokogiri
# Gemとバージョン

# 障害時 
libv8 3.16.14.7
therubyracer 0.12.2
spring 1.3.3
-------------------------
# 修正後 
libv8 3.16.14.13
therubyracer 0.12.2
spring 1.6.4

nokogiriは以下のコマンドを実行することでinstallに成功しました.

$ bundle config build.nokogiri --use-system-libraries

また, libv8のコンパイルに以下のパッケージが必要です. 後にbrewでインストールします.

  • apple-gcc42
  • v8-315

インストール後,下記を実行します

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

bundle install 中にlibv8のインストールに失敗する

libv8 : javascriptエンジンのライブラリ
therubyracer : javascriptのrubyラッパ 

bundle install中にlibv8で失敗する場合は, libv8のバージョンが原因です.

libv8は**OSのバージョンに依存する**ため, 使用するOSのバージョンに合わせてバージョン指定する必要があります(El Capitanはdarwin15).

El Capitanの場合, libv8 '3.16.14.11'以上にupdateすることで正常に動作します. therubyracer'0.12.2'を使用してください.

私の場合, libv8 '3.16.14.7'を使用していたため, bundler installが動いていませんでした.

## GemfileとGemfile.lockを変更

--------------------------
# Gemfile

gem libv8, '3.16.14.13'
gem therubyracer, '0.12.2'
--------------------------
# Gemfile.lock

libv8(3.16.14.13)
therubyracer(0.12.2)
--------------------------

## terminal

# libv8のコンパイルに必要なgccを入れる
$ brew install homebrew/dupes/apple-gcc42


# gemのインストール
$ bundle install --path vendor/bundle --jobs=10

bundle exec rails consoleに失敗する

Springのバージョンが原因でした. Springとは, 開発の高速化を目的としたRailsアプリのプリローダです.

bundler 1.11.0に加えられた変更で, springがうまく起動せずコケてしまうようです(詳細).

springのバージョンを'1.6.3以上'に上げることで回避できます.

## GemfileとGemfile.lockを変更
# 16/3/8時点, 1.6.4が最新

# Gemfile
gem 'spring', '1.6.4' 

# Gemfile.lock
spring(1.6.4) 

## terminal
$ bundle install --path vendor/bundle --jobs=10
$ bundle exec rails c

もし, うまく動かない場合はspringを再起動します.

$ bundle exec spring stop
$ bundle exec rails c

参考記事 以下のqiita記事を参考にさせていただきました. Yosemiteでlibv8をインストールする.

OS X El Capitanでlibv8 / therubyracerのbundle installに失敗する問題の解決方法

bundler 1.11.0 の変更で spring が起動しない件について