Windows で gem install しようとしたときに出てくるコレへの対処
エラー例
gem install knife-solo しようとしたときとか。
> gem install knife-solo … Fetching: coderay-1.1.0.gem (100%) Successfully installed coderay-1.1.0 Fetching: pry-0.10.3.gem (100%) Successfully installed pry-0.10.3 Fetching: libyajl2-1.2.0.gem (100%) Building native extensions. This could take a while... ERROR: Error installing knife-solo: ERROR: Failed to build gem native extension. C:/Ruby-2.2/bin/ruby.exe -r ./siteconf20151115-2044-1rd3y17.rb extconf.rb creating Makefile C:\Ruby-2.2\lib\ruby\gems\2.2.0\gems\libyajl2-1.2.0\ext\libyajl2 extconf.rb:104:in `makemakefiles': unhandled exception from extconf.rb:138:in `<main>' extconf failed, exit code 1 Gem files will remain installed in C:/Ruby-2.2/lib/ruby/gems/2.2.0/gems/libyajl2-1.2.0 for inspection. Results logged to C:/Ruby-2.2/lib/ruby/gems/2.2.0/extensions/x86-mswin32-100/2.2.0/libyajl2-1.2.0/gem_make.out
原因
結局いろいろ調べた結果、使ってる Ruby と MinGW がうまくマッチしていないことが問題っぽい。
Ruby が 32 ビットで MinGW が 64 ビットだったりとか、その逆だったりとか。
あと、Ruby は RubyInstaller 以外の手段(自前でビルドしたりとか RubyInstaller 以外のビルド版を使うとか)で導入していると MinGW とうまく噛み合わない。
とりあえず「extconf.rb:104:in `makemakefiles': unhandled exception」のようなエラーにハマったときには一旦 Ruby と MinGW をインストールし直してみるのが良いっぽい。
Ruby と MinGW のインストールし直し
gem install リトライ
> gem install knife-solo … 56 gems installed
成功。