僕がつまずいた IronRuby と CRuby の環境の差異をまとめていきます。
検証環境
OS | Windows 7(64bit) |
Ruby | IronRuby 1.1.3.0 |
ちなみに RUBY_VERSION の値は「1.9.2」でした。
組み込みライブラリ
MatchData
名前付き正規表現
- 名前による値の取得ができない。
以下事例です。
if "abc" =~ /a(?<example>b)c/ then puts $~[:example] end
を実行すると以下の例外が発生します。
can't convert String into Fixnum (TypeError)
名前による値の取得ができないだけで、正規表現としては妥当なものとして扱われます。
IO
open メソッド
- 文字コードを指定できない。
- System.ArgumentException が発生する。
- エラーメッセージ:illegal access mode
- ファイルを開いてから IO#set_encoding で指定できる。
以下事例です。
# CRuby では動作する以下のコードを IronRuby で動作させると System.ArgumentException が発生する。 open(filename, "r:UTF-8") do |file| # ファイルを処理する end # 代わりに以下のように記述する(※ MRI でも同様の書き方ができる)。 open(filename, "r") do |file| file.set_encoding = "UTF-8" # ファイルを処理する end
Mutex
- CRuby 1.9 以上では組み込みライブラリに Mutex が存在するが、IronRuby の場合、標準添付ライブラリの thread に存在する。
標準添付ライブラリ
json
- 使えない???
- IronRuby.Builtins.LoadError が発生する。
- エラーメッセージ:no such file to load -- json/pure
- 原因追究/回避策検討はしていない。何か知っている人がいたらコメント求む。
- とりあえず yaml を使うことにした。
コメント
本ページの内容に関して何かコメントがある方は、以下に記入してください。
コメントはありません。 コメント/ironruby/incompatible