先日バージョンアップしたRuby 。元々使い出したのが去年の初めからだったので、最初からRuby2.0をインストールして使っていました。そちらをRuby2.1にバージョンアップしたら、gem installがそのままでは使えなかったので、対応をした時の記録。
ruby2.1にバージョンアップしたら、gemが使えなくなっていた。(Windows7環境)
ひさしぶりにrspecを利用しようとしたら、rspecがインストールされていない事が判明し、前回の記憶を元にコマンドプロンプトで、「gem install rspec」を実行したら、以下のエラー。
D:\dev\Ruby\gem install rspec ERROR: Loading command install (LoadError) 193: %1は有効な Win32 アプリケーションではありません。 -D:/dev/Ruby/lib/ruby/2.1.0/i386-mswin32_100/zlib.so-mswin32_100/zlib.so ERROR: While executing gem ... (NoMethodError) undefined method 'invoke_with_build_args' for nil:NilClass
実は、最初は、gemsがインストールされていないと勘違いして、以下のURLを参考にgemの再インストールをしてしまった。
[ruby] RubyGems をインストールする(for Windows)-A More Beautiful dayが、何も変わらず……
再度先ほどのエラーメッセージで検索をしました。確かにzlibがなんか足りないみたいなメッセージがでてます。(こちらに似たような症例が)
そこで、zlibをWindowsにインストール。以下のページを参考にプリコンパイル版をダウンロード、解凍しました。(今日の時点では、1.2.8が最新版らしいので、zlib128-dll.zip)
2. インストール(Windowsプリコンパイル版)インストール先として上記の記事では、user/libを指定しているのですが、具体的にどこを指しているのかピンときません。結局、rubyのインストールフォルダの直下にあるbinに上記のダウンロードファイルを解凍したフォルダにあった「zlib1.dll」を上書きしました。(同名ファイルがここにあったので)
その後再度gem install rspecを実行
Fetching: rspec-core-2.14.8.gem (100%) Fetching: diff-lcs-1.2.5.gem (100%) Fetching: rspec-expectations-2.14.5.gem (100%) Fetching: rspec-mocks-2.14.6.gem (100%) Fetching: rspec-2.14.1.gem (100%) Successfully installed rspec-core-2.14.8 Successfully installed diff-lcs-1.2.5 Successfully installed rspec-expectations-2.14.5 Successfully installed rspec-mocks-2.14.6 Successfully installed rspec-2.14.1 5 gems installed Installing ri documentation for rspec-core-2.14.8... Installing ri documentation for diff-lcs-1.2.5... Installing ri documentation for rspec-expectations-2.14.5... Installing ri documentation for rspec-mocks-2.14.6... Installing ri documentation for rspec-2.14.1... Installing RDoc documentation for rspec-core-2.14.8... Installing RDoc documentation for diff-lcs-1.2.5... Installing RDoc documentation for rspec-expectations-2.14.5... Installing RDoc documentation for rspec-mocks-2.14.6... Installing RDoc documentation for rspec-2.14.1...
ようやくうまくいきました。2.0がインストールされた環境(Rubyというフォルダにインストールしています)に2.1をインストールするとRuby/lib/rubyの配下やRuby/lib/ruby/gemsの配下などに、バージョンごとのフォルダが作成され、そのバージョンごとのフォルダの下に、それぞれのバージョン用のgemファイル等が作られているようです。gemパッケージで必要な物は随時プラスしていく必要がありそうです。
以下の2冊の本で、Ruby独学してますが、最新版を使い続けているとやはりWebでの情報収集が不可欠ですね。
ソフトバンククリエイティブ
売り上げランキング: 17,681
アスキー・メディアワークス
売り上げランキング: 94,995