特に何もした覚えがないのに(←こういう時はたいてい何かやっている)、土日空けで$bundle exec rspec ~~~
の実行に失敗した。仕方がないので$ bundle install
を実行したところ、以下のようなエラーを吐いてしまった。
$ bundle install Fetching gem metadata from http://rubygems.org/....... (中略) Receiving objects: 100% (521/521), 89.46 KiB | 102 KiB/s, done. Resolving deltas: 100% (262/262), done. Using rake (0.9.2.2) Installing i18n (0.6.1) (中略) Installing bson_ext (1.7.0) with native extensions Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/bin/ruby extconf.rb checking for asprintf()... *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/bin/ruby /Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. from /Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:461:in `try_link0' from /Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:476:in `try_link' from /Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:619:in `try_func' from /Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:894:in `block in have_func' from /Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for' from /Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone' from /Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:254:in `open' from /Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone' from /Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:254:in `open' from /Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:280:in `postpone' from /Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for' from /Users/(ユーザー名)/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:893:in `have_func' from extconf.rb:3:in `' Gem files will remain installed in /Users/(ユーザー名)/.rvm/gems/ruby-1.9.3-p125/gems/bson_ext-1.7.0 for inspection. Results logged to /Users/akiyama/.rvm/gems/ruby-1.9.3-p125/gems/bson_ext-1.7.0/ext/cbson/gem_make.out An error occured while installing bson_ext (1.7.0), and Bundler cannot continue. Make sure that `gem install bson_ext -v '1.7.0'` succeeds before bundling.
原因
エラーメッセージ中にあるように、$ ruby-1.9.3-p125
を実行してた。しかし、以前使っていたのはruby-1.9.3-p392だった。そのため、以下のようにやったら普通にうまくいった。
$ rvm use ruby-1.9.3-p392 $ bundle install $ bundle exec rspec ~~~
ちょっとみっともないミスだけれど、忘れないようにメモ。
rvm use 1.9.3-p392 –default
しておけばいいのでは
ちなみにこの問題が起きた時の根本の原因は、.rvmrcの内容が`rvm use –create ruby-1.9.3`と書かれていたことで、rvm use –create ruby-1.9.3-p193というようにビルド番号(?)を付加することで解決していました。