JRuby
JRubyでJavaのClassクラスのメソッドを元の名前(getMethodsなど)で 使いたいときなどに、Javaのclassオブジェクトに直接アクセスしたいことがある。 その場合は.java_class.to_javaか.getClassを用いればいい。 jirbで実行した結果 irb(main):001:0> include…
JRubyで呼び出したJavaメソッドからの戻り値が、Rubyのどの型に変換されるか調べた Java戻り値 Ruby boolean true, false char Fixnum byte Fixnum short Fixnum int Fixnum long Fixnum float Float double Float String String BigInteger Bignum Wrapper…
一度、型変換に失敗すると同一オブジェクトでの型変換ができなくなることがあるようです。 include Java hash = {"a"=>"b"} hash2 = {"a"=>"b"} begin java.util.Collections.fill(hash, "a") rescue; end java.util.HashMap.new.putAll(hash) #java.util.Ha…
JRubyからJava呼び出しの際にどんなオブジェクトが渡るかテスト Java public class Convert { public static void print(Object obj){ System.out.println(obj.getClass() +":"+ obj); } } JRuby include Java def conv obj Java::Convert.print obj end con…
JRubyからJavaにclassオブジェクトを渡すとどの型になるのか試してみた。 Javaのコードは単純にclass文字列表現をprint public class ClassSample{ public static void print(Class clazz){ System.out.println(clazz.toString()); } } JRubyではJavaのビル…
JRubyからJavaのメソッドを呼ぶ場合、メソッドの引数は自動で型変換される。 Javaのメソッドの引数を具体的な型で定義したとき、Rubyのどの型を受け入れられるか調べた。 (以下のようなメソッドをJRubyから引数に様々なものを入れて呼び出してみた) public s…
JRubyで外部のJavaライブラリと連携とかするとき、RubyのFileクラスのopenのように自動的に閉じるFileInputStream、FileOutputStreamがほしいので作ってみた。 わりと簡単に作れる include Java class FileInput def self.open(file, &block) raise "no bloc…
制御構造にはJSTLが使えるからいいけど、フォームやリンクを生HTMLで書くのは不便なのでカスタムタグを用いて記述したいところ。 いろいろ考えたが、Railsの機能を使いつつタグファイルによるカスタムタグ作成ができたのでメモ。 JSPのエスケープシーケンス…
前回でViewにJSPを使えるようになったので今回はController。 とりあえず以下のようなJavaのActionクラスをRailsのControllerにマッピングすることを考える。 package sample; public class SampleAction { public Integer result; public String v1; public…
文字列バッファに出力するようにしたHttpServletResponseを作って RequestDispatcherのincludeでJSPのページを取ってくればいい。 railsのControllerで以下のように書く(前提:JRuby-Rack環境) writer = java.io.StringWriter.new req = request.env['java.s…
JRubyの現在のランタイムを取得する JRuby.runtime JRubyの公式ページには一切書かれてなかったんだけど・・・ JRuby-Rack Tomcat上でRailsアプリを動かす場合など... ServletContextの取得 $servlet_context または request.env['java.servlet_context'] Se…
JRuby 1.5.0が出たのでうまくいくか試してみた (以前やった方法>http://anond.hatelabo.jp/20100422043007)環境は以下のとおり CentOS 5.3 (on VirtualBox) JDK 1.6.0_20 Tomcat 6.0.26 JRuby 1.5.0 Rails 2.3.5 Redmine 0.9.4 MySQL 5.0.77 Warbler 1.1.0 …