2009-07-08 9 views
3

私はRubyで書かれたフレームワークをGroovyに変換する必要があります。
コアルビの外では何も使用しませんが、メタプログラミングはたくさんあります。Ruby to Groovy

Groovyでサポートされている基本的な機能はすべて同じで、切り替えは複雑ですか?

答えて

5

サイズや機能などによっては簡単ではないかもしれないと思いますが、書き換えとしてあまり翻訳されません。書き直しを考えている時はいつでも、私は自分自身をJoel's musings on thisと呼んでいます。

なぜGroovyでこれを修正する必要がありますか? JVMが必要な場合(追加のライブラリ/フレームワークを統合するなど)、JRubyを見ましたか?それはあなたに多くの仕事と苦痛を救うかもしれません。

+1

+1 JRubyのアイデアのために! –

+0

私はすでにJRuby + Swingで試してみましたが、素晴らしい仕事をしましたが、残念ながら最終的な言語決定を行う立場にはありません。 –

+0

また、フレームワークを他の言語に変換することはリファクタリングと見なすべきであり、リファクタリングは単体テストのスーツがあることを意味します。テストを実施しないで移行を開始しないでください。これは動作しない可能性が高いためです。 ここには素晴らしいランタバウトがあります:http://hamletdarcy.blogspot.com/2009/06/forgotten-refactorings.html –

8

GroovyとRubyの間に大きな違いはありませんが、メタプログラミングの側面は少し変わります。

私はGroovyの専門家ではないですが、私はあなたにドキュメント(http://groovy.codehaus.org/Dynamic+Groovy)でいくつかのポインタを参照することができます。

動的なメソッド呼び出し:欠落している

# Ruby 
an_instance.send("method_name") 

// Groovy 
anInstance."$methodName"() 

は方法:

# Ruby 
def method_missing(meth, *args, &blk) 
    # Some code 
end 

// Groovy 
def methodMissing(String name, args) { 
    // Some code 
} 

実行時にクラスにメソッドを追加する:

# Ruby 
class SomeObject 
    define_method :new_method do 
    # Do something 
    end 
end 

// Groovy 
SomeObject.metaClass.newMethod = {-> 
    // Do something 
}