Windows 環境ではどのバージョンの Ruby を使用すればよいですか?
1.9 で Watir を使用しようとしていますが、動作しません。1.8.6 で動作します。
使用するバージョンに関する推奨事項と、Watir が 1.9 で動作しない理由
Watir.comは、Ruby1.8.6-26の使用を推奨しています。私は試していませんが、Ruby1.9と互換性があると主張するWatirのフォークがあります。
私はこれを使用し、それは機能します:
>ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
Watir(およびFireWatir)をruby 1.9.2で実行できるようにするには、devkitをインストールし、次の手順に従います。http://rubyinstaller.org/downloads/GitHubのRubyインストーラー
gemアンインストールwin32-apigemインストールwin32-api--platform= ruby
RubyInstallerに付属しているmingwバージョンのRubyを使用することをお勧めします。Rubyの古いmswin32バージョンはレガシーと見なされます。一部のgemはソースからコンパイルする必要があり(RedClothが良い例です)、このためにはDevKitをインストールする必要があります。ただし、watirをコンパイルする必要はありません。gemの依存関係はすべて、mingw32拡張機能(nokogiriおよびwin32-api)でプリコンパイルされています。
Pikを使用して、Windowsに複数のバージョンのRuby(JRubyおよびIronRubyを含む)をインストールできます。Pik gemをインストールしたら、pik install ruby 1.9.1
またはなどのコマンドを発行することで、新しいバージョンのrubyを簡単にインストールできますpik install jruby
。pik install devkit
インストールされているRubyのすべてのコピーにDevKitをインストールすることもできます。ドキュメントと多くの使用例はここにあります。
「正しい」バージョンはありません。1.8.6、1.8.7、および 1.9.1 はすべて公式に「推奨」されていますが、これはあまり役に立ちません!
Windows で 1.8.x の gem が 1.9.x で動作しない場合、多くの場合、gem (またはその依存関係の 1 つ) にコンパイル済みの要素 (通常は.so
拡張子が付いた名前の DLL) が含まれており、このコンポーネントには「 Ruby 1.9 の標準である mingw32 に対してはまだコンパイルされていませんが、1.8.6 以前のバージョンは (古い) MS Visual C でコンパイルされていました。
watir gem を見ると、問題の可能性がある win32ole.so が含まれていることがわかります。なぜそれが必要だったのかはわかりません.Windows用にインストールされたセットの一部です. おそらく開発者は、ライブラリのバージョンを使用するのではなく、特定のバージョンを強制的に使用するように、固定された安定バージョンを確保する必要がありました。それとも、彼らは何かを修正しましたか?わからない。
さらに、watir は win32-api と nokogiri にも依存しています。どちらも私のマシンに mswin32 バージョンをインストールしており、1.9 で動作するには mingw32 バージョンが必要です。
手元に 1.9 のインスタンスがないので、これらのバージョンが存在するかどうかすぐにはわかりません。
win32ole.so の mingw32 バージョン (おそらく [ruby-dir]/lib/ruby/1.9/i386-mingw32 のような場所) を探して、watir が使用するものの代わりに配置してみてください。