君の瞳はまるでルビー - Ruby 関連まとめサイト

IronRuby と CRuby の違い

最終更新: 2015-03-31 (火) 21:53:18 (2920d)

僕がつまずいた IronRubyCRuby の環境の差異をまとめていきます。

検証環境

OSWindows 7(64bit)
RubyIronRuby 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

お名前: