IronRuby

提供: MonoBook
ナビゲーションに移動 検索に移動

IronRuby(読み:あいあんるびー)とは、マイクロソフトDLR開発チームの中の人が作った.NET Framework上で動作するRubyの実装である。読み方は「あいあんるびー」であり「あいろんるびー」ではない。

概要[編集 | ソースを編集]

IronRubyは元々マイクロソフトによって管理されていたが、IronPythonと共にオープンソースコミュニティ「IronLanguageプロジェクト」に譲渡され、現在ではユーザーコミュニティにより開発と管理がなされている。ライセンスにはApache License 2.0を採用しており完全なるオープンソースである。

互換性[編集 | ソースを編集]

2012年3月時点で最新のIronRuby 1.1.3 は、Ruby 1.9.2 互換となっており、Ruby 1.8.6 との互換性は捨てられている。Ruby 1.8.6 との互換を希望するユーザーのために IronRuby 1.0 も継続して提供されているので、必要ならばそちらを使うこと。

インストール[編集 | ソースを編集]

Windows[編集 | ソースを編集]

IronRubyの公式サイトからインストーラーダウンロードして実行するだけである。

注意事項[編集 | ソースを編集]

RubyGemsはIronRubyをインストールしたディレクトリの中の「\Lib\ruby\gems\」ディレクトリ以下に配置されるため、IronRubyをデフォルトのままProgram Filesディレクトリにインストールすると、Windows Vita以降のセキュリティ制限により動かないので注意すること。

また、RubyGemsの中にはnmakeを用いる物も多々ある。nmakeは単品配布[1]、もしくはVisual Studio同梱の物を使うと良い。なお、nmakeへのパスが通っていないと次々とエラーがでることになる。Visual Studio同梱版の場合はcmd.exe起動時に一式のパスを通してくれる「Visual Studio コマンドプロンプト」というスタートメニューの中にあるショートカットから起動するという手もある。

Mono[編集 | ソースを編集]

以下は2012年3月14日時点でのインストール方法です。URLなど、IronRubyのバージョンはIronRuby 1.1.3(Ruby 1.9.2互換)を対象としています。

基本的にはIronRubyの公式サイトからzipファイルダウンロードしてきて展開するだけです。

# ダウンロード
$ wget --content-disposition "http://download.codeplex.com/Download?ProjectName=ironruby&DownloadId=217153&FileTime=129445296766130000&Build=18559"

# 展開
$ unzip IronRuby.zip -d /opt/ironruby

# ショートカット用のシェルスクリプトを用意しておく
$ echo '#!/bin/sh'$'\nexec mono $MONO_OPTIONS "/opt/ironruby/bin/ir.exe" "$@"' > /opt/ironruby/bin/ir
$ chmod 755 /opt/ironruby/bin/ir

gemが動かない。


Mono(ソースコードから)[編集 | ソースを編集]

以下は2012年03月09日時点でのインストール方法であり、今後変更になる可能性がある。

1. GitHubからソースコードダウンロードする。

GitHubのサイト上からブラウザダウンロードして展開する。

$ wget "https://github.com/IronLanguages/main/zipball/v1.1.3"
$ unzip v1.1.3
$ cd IronLanguages-main-93ce72d/

2. ファイル名の大文字小文字を統一する。

ソリューションファイルの中で指定されている各種ファイルが、ファイル名の大文字小文字を区別しないWindows向けに作られており、ファイル名の大文字小文字を区別するLinux/Unixでは「ファイルがない」などのエラーとなるので統一する。

$ find . -type f -name *.sln -exec sed -i.bak 's/SilverLight/Silverlight/g' '{}' \;


3. xbuildコマンドでビルドする。

デフォルトで警告をエラーとするTreatWarningsAsErrorsが有効になっているので無効化した状態でビルドする。

$ xbuild /p:Configuration=Release /p:TreatWarningsAsErrors=false Solutions/Ruby.sln


4. Ruby標準ライブラリのパスを書き換えておく。

※下記ではインストール先を「/opt/ironruby/」ディレクトリとしているので適宜書き換えること。

Ruby標準ライブラリのパスはApp.configに記載されているので適宜書き換える。 ここでは実行ファイルの在処の中に配置する。

$ find bin/ -name *.config -exec sed -i.bak 's/\.\.\\.\.\\Languages\\Ruby\\StdLib/StdLib/g' '{}' \;

5. 出来上がったファイルをコピーする。

※下記ではインストール先を「/opt/ironruby/」ディレクトリとしているので適宜書き換えること。

実行ファイル。

$ mkdir -p /opt/ironruby/lib
$ cd bin/Release
$ for f in *.exe *.dll *.config; do \
    install $f /opt/ironruby/lib; \
  done
$ cd ../../

ライブラリ。

$ cp -R Languages/Ruby/StdLib /opt/ironruby/lib/

gemなどの各種スクリプト。

$ for f in Languages/Ruby/Scripts/bin/*; do \
    install $f /opt/ironruby/bin; \
  done


6. ショートカット用のシェルスクリプトを作っておく。

※下記ではインストール先を「/opt/ironruby/bin」ディレクトリとしているので適宜書き換えること。

$ mkdir -p /opt/ironruby/bin
$ echo '#!/bin/sh'$'\nexec mono $MONO_OPTIONS "/opt/ironruby/lib/ir.exe" "$@"' > /opt/ironruby/bin/ir
$ chmod 755 /opt/ironruby/bin/ir


7. IronRubyを起動してみる

$ cd /opt/ironruby/bin
$ ./ir
>>> puts 'hello ironruby'
hello ironruby
=> nil
>>> (Ctrl-Dで終了)


まだgemが動かせていない。 Windowsのigem.batは動くんだがねぇ。


IronRuby Tools[編集 | ソースを編集]


RubyGems[編集 | ソースを編集]

IronRubyでRubyGemsを使うには「ir -S gem」コマンドを使う。このコマンドをバッチファイルにしたigem.batという物もあるのでそちらを使っても良い。

簡単な使い方を表示する[編集 | ソースを編集]

引数を省略すると簡単なヘルプが表示される。 全コマンドが表示されるわけではないので注意すること。

igem

基本的には本家Rubyのgemコマンドとほぼ同じなので、詳細はRubyGemsの公式サイト上のドキュメントを見ておくとよい。

標準パッケージをアップデートする[編集 | ソースを編集]

igemコマンドに「--no-ri --no-rdoc」というオプションを付けることでドキュメントの生成を抑制する。 RubyGemsのインストールやアップデートのうち、大半の時間はドキュメント生成なので、このオプションを付けることで驚くほど高速化することができる。

また、「-V」オプションを付けることで途中経過を表示することができる。通常は正常終了するか異常終了するまで何も画面にでないので本当に動いているか不安になるので、極力付けた方がよい。

igem update --system --no-ri --no-rdoc -V

インストールされているパッケージの一覧を表示する[編集 | ソースを編集]

igem list --local

RubyGemsで配布されているパッケージの一覧を表示する[編集 | ソースを編集]

なお、RubyGemsで配布されているパッケージは膨大な数にのぼるので、とてつもなく時間がかかる。

igem list --remote

パッケージをインストールする[編集 | ソースを編集]

たとえばrakeをインストールする場合は以下のようにする。

igem install rake -V --no-ri --no-rdoc

関連項目[編集 | ソースを編集]

外部リンク[編集 | ソースを編集]

参考文献[編集 | ソースを編集]