Ktouth Brand. on Web

け〜くんこと K.Ktouth のだらだらした日常と突発的に作るプログラムや読み物とかの雑多サイト



[2012年04月08日]

.NET3.5 で 最新の IronRuby(1.1.3) を使用する

2016年07月13日 19:08更新 筆者:K.Ktouth

Professional IronRuby(AA)

C# で BDD を導入するにあたり、まずシンプルに「IronRuby + cucumber/rspec」を使ってみようと思ったのですが、ちょっとした壁がありました。
IronRuby の最新版はすでに .NET4.0 にフォーカスを移しているということです。自分の開発環境は VS2008Pro. = .NET3.5。一応 VC#2010 や SharpDevelop4.2beta はインストールしてあるとは言え、なるべくならがっつりとアドインを組み込んで強化されている IDE で開発したいわけです。自前のライブラリも 3.5 向けのままだし。

とはいえ IronRuby の 3.5 向けバイナリパッケージは安定版が 1.0、開発版が 1.1alpha で提供が終わっています。そしてそれらの互換性は 1.8.6 相当。せめて 1.8.7 なら何の問題もないのだけど、このバージョンだといくつかの gem がバージョンチェックでインストール不可になるんですよね……はず

ところが。
公式のダウンロードページ「IronRuby.net / Get IronRuby」をよく見ると……

Note:
IronRuby also runs on .NET: 3.5 SP1, but must be compiled from source.

IronRuby は .NET3.5SP1 でも動くよ。でもソースからコンパイルしてね」とあるじゃないですか!
最新版は 1.9.2 相当(になる予定)なので、上手く動くなら色々な問題が解決できそうです。試してみないわけには行くまいて!(笑)

(以下、導入手順)

まず、.NET4.0 版をインストール

単純に言ってしまえば、ソースからコンパイルが必要なのは C# で書かれたアセンブリのみ。それ以外のものに関しては既に存在するバイナリパッケージからインストールするのが一番手っ取り早いです。

ソースをローカルに展開しビルドする

これに関しては github からリポジトリクローンを作るなりzipファイルをダウンロードして解凍するなりします。
VS2008pro. が導入されている環境なら msbuild.exe を使ってコマンドラインからコンパイルするのが一番手っ取り早いかと思われます。
# 各ソリューション/プロジェクトは VS2010 向けなので VS2008 では開けず VC#2010exp. ではエラーが出ました。

cd ソースを展開したディレクトリ
%VS90COMNTOOLS%vsvars32.bat # コマンドラインでのコンパイル環境設定
scripts/bat/dev.bat # ソース付属の開発環境設定
msbuild solutions/ruby.sln /p:Configuration=v2Release # コンパイルオプションをつけてコンパイル

自分がコンパイルした時には警告がそこそこ、エラーが一つ出ました。警告は単に「msbuild のバージョン指定が違うよ」というものなので無視してOK。コンパイルエラーはテスト用アセンブリなので、該当コードとその直後のASSERT周りをコメントアウトして場当たり対応(笑)
再度コンパイルすると生成に成功しました。

バイナリの差し替え

あとはインストール済みの .NET4.0 版の bin ディレクトリに先ほど生成したファイル群から *.exe と *.dll をコピーするだけです。IronRuby.Text.exe は除く。
これで「ir --version」と入力すると「IronRuby 1.1.3 on .NET 2.0.*****」と表示されます♪

後は……

gem を適当に色々導入すればOK。
うちの環境だと何故か igem によるサーバからの fetch/install が出来ない(SocketErrorが出る)ので、導入済みの MRI 版の gem コマンドで fetch してローカルからインストールという非常に手間のかかることをやりました ^^;
いくつかの gem はエラーを吐いて導入できなかったり、そもそも ネイティブ拡張ライブラリを使う gem は使用できないし、かなり手間もかかりますが、どうにか cucumber/rspec を導入することに成功しました♪

現時点での igem list。

*** LOCAL GEMS ***

builder (3.0.0)
cucumber (0.6.4) # これ以降のバージョンは使用不可
diff-lcs (1.1.3)
iron-term-ansicolor (0.0.3)
json_pure (1.6.4) # 最新版はエラーが出るため導入不可
polyglot (0.3.3)
rake (0.9.2.2)
rspec (2.9.0)
rspec-core (2.9.0)
rspec-expectations (2.9.0)
rspec-mocks (2.9.0)
term-ansicolor (1.0.7)
treetop (1.4.10)

あとは、実際に動かして動作成功するかどうかをチェックしないとなぁ……

本日のリンク元
アンテナ
その他のリンク元
検索