読者です 読者をやめる 読者になる 読者になる

炊きたてのご飯が食べたい

定時に帰れるっていいね。自宅勤務できるっていいね。子どもと炊きたてのご飯が食べられる。アクトインディでは積極的にエンジニアを募集中です。

Mac OS 10.11 El Captain 環境での bundle install で nio4r libv8 therubyracer mysql2 がエラーになる


環境
Mac OS 10.11 El Captain
ruby 2.1.0
bundle install --path vendor/bundle

で以下のエラー

An error occurred while installing nio4r (1.0.0), and Bundler cannot continue.

Build Issue on OS X 10.11 and Ruby 2.2.2

Gemfile.lock を見ると listen の gem に依存していることが分かったので、以下を実行してみる

bundle update listen

するとこんなエラーが出る。

mac$ bundle update listen
Fetching gem metadata from https://rubygems.org/.......
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies.....
Using rake 10.4.2
・
・
・
Using kgio 2.9.2
Installing libv8 3.16.14.3 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
../src/cached-powers.cc:136:18: error: unused variable 'kCachedPowersLength' [-Werror,-Wunused-const-variable]
static const int kCachedPowersLength = ARRAY_SIZE(kCachedPowers);
                 ^
1 error generated.

libv8 と therubyracer は環境への依存性が強いらしく、OSに適したものを使わないとエラーになるらしいので、環境が変わるとエラーになりやすいらしい。インストールする環境に合わせる為に、 update に libv8 を加える。

bundle update listen libv8

Yosemiteにしてからbundle installが通らなくなった原因と対応

他にも、こんなエラー

mac$ bundle update listen
Fetching gem metadata from https://rubygems.org/.......
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies.....
Using rake 10.4.2
・
・
・
Installing mysql2 0.3.15 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/xxxxxxx/.rbenv/versions/2.1.0/bin/ruby extconf.rb
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
checking for mysql_query() in -lmysqlclient... no
・
・
・
extconf failed, exit code 1

マシンに mysql をインストールすることで解決する

brew install mysql

Installing mysql2 gem for Ruby on Rails with Mac OSX 10.6

以上で、無事に bundle を実行することができました。