1.8と1.9の互換性をMultirubyで確認
1678 ワード
Rubyクラスライブラリやアプリケーションの開発者は、異なるRubyバージョン間のコードの互換性を確保する新しいタスクを持っています.様々なオプションのRuby実装が原因の1つであるが,それらの共通の目標はMRIの動作方式と一致することである.しかし、Ruby 1.9がリリースされた後、状況は変化しました.Ruby 1.9は互換性のない変化があったり、少なくともいくつかのコードを修正したりしました.
例えば、1.9以前にRubyブロック内のローカル変数に問題があった.
ZentestパッケージのMultirubyは、この問題を回避するのに役立ちます.Zentestの作成者Ryan DavisはRuby 1.8と1.9をMultiruubyでどのように処理するかを説明した.
今では1.9がありますが、Multirubyでマルチバージョンテストを行う方法について議論しましょう.MultirubyのZentestファミリーでの知名度はあまり高くありません.複数のrubyバージョンが自動的に構築され、内部にインストールされ、すべてのバージョンに複数のコマンドが送信されます.これにより、複数のrubyバージョンを同時に貫通してテストを実行できます.
Zentestのインストールは簡単です. Rubyバージョン(1.8と1.9など)をダウンロードし、 をコンパイルします.
その後、は、利用可能なRubyバージョンごとにパラメータ を実行する.
通常、Multirubyはほとんどのコードでのみ使用されます.
テストで上書きされた場合に問題点を特定します.しかし、Rubyは英雄が輩出した時代であり、JRuby 1.0と1.1、IronRuby、そしてRubiniusのように雨後のタケノコのように次々と現れ、クロスタイムテストを簡素化できるツールが急務である.
あなたはすでにRuby 1.9にあなたのアプリケーションを移植し始めたか、少なくともRuby 1.9でクラスライブラリやアプリケーションをテストし始めましたか?
Checking 1.8 vs 1.9 compatibility with Multiruby
例えば、1.9以前にRubyブロック内のローカル変数に問題があった.
a = 1
foo.do_something {|a|
a = 42
}
puts a
Ruby 1.8では、ブロック変数aと含まれるドメインのaが変数であるため、このコードは「42」を印刷する.Ruby 1.9はこの問題を解決し,ブロックの挙動は人々の予想と一致し,すなわち「1」を印刷した.したがって,あるクラスライブラリやアプリケーションのコードが古い動作に依存している場合,Ruby 1.9での表現は異なるに違いない.ZentestパッケージのMultirubyは、この問題を回避するのに役立ちます.Zentestの作成者Ryan DavisはRuby 1.8と1.9をMultiruubyでどのように処理するかを説明した.
今では1.9がありますが、Multirubyでマルチバージョンテストを行う方法について議論しましょう.MultirubyのZentestファミリーでの知名度はあまり高くありません.複数のrubyバージョンが自動的に構築され、内部にインストールされ、すべてのバージョンに複数のコマンドが送信されます.これにより、複数のrubyバージョンを同時に貫通してテストを実行できます.
Zentestのインストールは簡単です.
gem install ZenTest
Multirubyの動作メカニズムは次のとおりです.その後、
multiruby
このコマンドは、与えられたすべてのパラメータをRubyバイナリファイルに渡します.上記のコード例を実行すると、次のような出力が得られます.VERSION = 1.8.6-p111
42
RESULT = 0
VERSION = 1.9.0-0
1
RESULT = 0
TOTAL RESULT = 0
failures out of 2
Passed: 1.8.6-p111, 1.9.0-0
Failed:
には1.8が見られる.x上の出力結果は「42」であったが、1.9上では「1」となった(上の「RESULT」はRuby解釈器の脱退コードである).通常、Multirubyはほとんどのコードでのみ使用されます.
テストで上書きされた場合に問題点を特定します.しかし、Rubyは英雄が輩出した時代であり、JRuby 1.0と1.1、IronRuby、そしてRubiniusのように雨後のタケノコのように次々と現れ、クロスタイムテストを簡素化できるツールが急務である.
あなたはすでにRuby 1.9にあなたのアプリケーションを移植し始めたか、少なくともRuby 1.9でクラスライブラリやアプリケーションをテストし始めましたか?
Checking 1.8 vs 1.9 compatibility with Multiruby