RubyをJavaに変換できるという触れ込みの Rubyflux をためしてみました。
headius/rubyflux - JRubyのCharles Nutterさんが作ってる。
README通りにやるとうまくいく。ように見えてサンプルの素直なフィボナッチ数列のものじゃないと動かない。空のクラスをインスタンス化しただけのものでもコンパイル出来ないJavaのコードになったりした。
今後の展開にきたい。
$ git clone https://github.com/headius/rubyflux.git $ cd rubyflux $ brew install maven2 $ mvn package $ rbenv install jruby-1.7.2 $ rbenv shell jruby-1.7.2 $ cat target.rb # coding: utf-8 def fib(num) a, b = 0, 1 num.times { a, b = b, a + b } a end puts fib 40 $ rake run\[target.rb\] jruby -I target:src/main/ruby src/main/ruby/ruby_flux.rb fib.rb javac fib.java java fib Exception in thread "main" java.lang.RuntimeException: Method 'times' not defined on type RFixnum at RKernel.method_missing(RKernel.java:56) at RObject.times(RObject.java:9) at RFixnum.times(RFixnum.java:4) at test.fib(test.java:19) at test.$main(test.java:10) at test.main(test.java:5) rake aborted! Command failed with status (1): [java test...] org/jruby/RubyProc.java:249:in `call' /Users/tomohiro/repositories/rubyflux/Rakefile:16:in `(root)' org/jruby/RubyProc.java:249:in `call' org/jruby/RubyArray.java:1613:in `each' org/jruby/RubyArray.java:1613:in `each' org/jruby/RubyKernel.java:1046:in `load' Tasks: TOP => run (See full trace by running task with --trace)
<ujm>: sixeight's house
— mc68さん (@mc681) 1月 22, 2013