Windowsで古いAWS SDK for Rubyを動かしたい

諸般の事情により、aws-sdkの古いバージョンをインストールしてみます。

gem install aws-sdk -v 1.5.7
ERROR:  Error installing aws-sdk:
        The 'json' native gem requires installed build tools.

Please update your PATH to include build tools or download the DevKit
from 'http://rubyinstaller.org/downloads' and follow the instructions
at 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'

どうやらWindowsではDevelopment-Kitが必要なようです。

Development-Kitのインストール

http://rubyinstaller.org/downloads/

からバージョンに合ったDevelopment-Kitをダウンロードしてきます。

Ruby1.9.3の場合は DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe になります。

自己解凍形式のファイルなので、C:\Program Files (x86)\Heroku\devkit など、適当なフォルダに解凍します。

devkitを解凍したフォルダに移動してinit,installを実行します。

cd C:\Program Files (x86)\Heroku\devkit
ruby dk.rb init
[INFO] found RubyInstaller v1.9.3 at C:/Program Files (x86)/Heroku/ruby-1.9.3

Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.
ruby dk.rb install
[INFO] Updating convenience notice gem override for 'C:/Program Files (x86)/Heroku/ruby-1.9.3'
[INFO] Installing 'C:/Program Files (x86)/Heroku/ruby-1.9.3/lib/ruby/site_ruby/devkit.rb'

aws-sdkインストール試行錯誤

さて改めてaws-sdkをインストールしてみます。

gem install aws-sdk -v 1.5.7
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing aws-sdk:
        ERROR: Failed to build gem native extension.

        "C:/Program Files (x86)/Heroku/ruby-1.9.3/bin/ruby.exe" extconf.rb
creating Makefile

make
generating generator-i386-mingw32.def
/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `C:/Program Files (x86)/Heroku/ruby-1.9.3/bin/ruby -e "puts 'EXPORTS', 'Init_generator'"  > generator-i386-mingw32.def'
make: *** [generator-i386-mingw32.def] Error 2


Gem files will remain installed in C:/Program Files (x86)/Heroku/ruby-1.9.3/lib/ruby/gems/1.9.1/gems/json-1.8.1 for inspection.
Results logged to C:/Program Files (x86)/Heroku/ruby-1.9.3/lib/ruby/gems/1.9.1/gems/json-1.8.1/ext/json/ext/generator/gem_make.out

https://github.com/mitchellh/vagrant/issues/1619

どうやらrubyのインストールパスに空白が含まれているとダメになるようです。

仕方ないのでWIndowsでシンボリックリンクを張って対応します。

コマンドプロンプトを管理者権限で実行して以下を実行します。

C:\Windows\system32>mklink /D C:\ruby-1.9.3 "C:\Program Files (x86)\Heroku\ruby-1.9.3"
C:\ruby-1.9.3 <<===>> C:\Program Files (x86)\Heroku\ruby-1.9.3 のシンボリック リンクが作成されました

その上で環境変数のrubyのパスをC:\ruby-1.9.3の方に変更しておきます。

改めてインストールを試みてみます。

gem install aws-sdk -v 1.5.7
Temporarily enhancing PATH to include DevKit...
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied - C:/ruby-1.9.3/lib/ruby/gems/1.9.1/gems/json-1.8.1/ext/json/ext/generator/extconf.rb

管理者権限を持った ruby cosole でコマンドを実行する必要があります。

スタートメニュー ⇒ Ruby 1.9.3-p448 ⇒ Rubyコマンドプロンプトを開く

を右クリックして管理者として実行をしてインストールを行います。

gem install aws-sdk -v 1.5.7
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
Fetching: multi_xml-0.5.5.gem (100%)
Fetching: httparty-0.13.1.gem (100%)
When you HTTParty, you must party hard!
Fetching: aws-sdk-1.5.7.gem (100%)
Successfully installed json-1.8.1
Successfully installed multi_xml-0.5.5
Successfully installed httparty-0.13.1
Successfully installed aws-sdk-1.5.7
4 gems installed
Installing ri documentation for json-1.8.1...
Installing ri documentation for multi_xml-0.5.5...
Installing ri documentation for httparty-0.13.1...
Installing ri documentation for aws-sdk-1.5.7...
Installing RDoc documentation for json-1.8.1...
Installing RDoc documentation for multi_xml-0.5.5...
Installing RDoc documentation for httparty-0.13.1...
Installing RDoc documentation for aws-sdk-1.5.7...

なお、プログラム側からバージョンを指定して呼び出すには以下のようにします。

gem "aws-sdk", "1.5.7"
require 'aws-sdk'