JRuby

JRubyでJavaのclassオブジェクトへのアクセス

JRubyでJavaのClassクラスのメソッドを元の名前(getMethodsなど)で 使いたいときなどに、Javaのclassオブジェクトに直接アクセスしたいことがある。 その場合は.java_class.to_javaか.getClassを用いればいい。 jirbで実行した結果 irb(main):001:0> include…

Java to Ruby 変換表

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…

Ruby Hash to Java Map Conversion Bug

一度、型変換に失敗すると同一オブジェクトでの型変換ができなくなることがあるようです。 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…

Ruby to Java 変換

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オブジェクトを渡す

JRubyからJavaにclassオブジェクトを渡すとどの型になるのか試してみた。 Javaのコードは単純にclass文字列表現をprint public class ClassSample{ public static void print(Class clazz){ System.out.println(clazz.toString()); } } JRubyではJavaのビル…

Ruby to Java 変換表

JRubyからJavaのメソッドを呼ぶ場合、メソッドの引数は自動で型変換される。 Javaのメソッドの引数を具体的な型で定義したとき、Rubyのどの型を受け入れられるか調べた。 (以下のようなメソッドをJRubyから引数に様々なものを入れて呼び出してみた) public s…

自動的に閉じるJavaファイルストリーム

JRubyで外部のJavaライブラリと連携とかするとき、RubyのFileクラスのopenのように自動的に閉じるFileInputStream、FileOutputStreamがほしいので作ってみた。 わりと簡単に作れる include Java class FileInput def self.open(file, &block) raise "no bloc…

JSPからRailsの機能を使う

制御構造にはJSTLが使えるからいいけど、フォームやリンクを生HTMLで書くのは不便なのでカスタムタグを用いて記述したいところ。 いろいろ考えたが、Railsの機能を使いつつタグファイルによるカスタムタグ作成ができたのでメモ。 JSPのエスケープシーケンス…

RailsのController実装をJavaで作る

前回でViewにJSPを使えるようになったので今回はController。 とりあえず以下のようなJavaのActionクラスをRailsのControllerにマッピングすることを考える。 package sample; public class SampleAction { public Integer result; public String v1; public…

Railsのerbレイアウトの中にJSPの本文を埋め込む

文字列バッファに出力するようにしたHttpServletResponseを作って RequestDispatcherのincludeでJSPのページを取ってくればいい。 railsのControllerで以下のように書く(前提:JRuby-Rack環境) writer = java.io.StringWriter.new req = request.env['java.s…

JRuby Tips

JRubyの現在のランタイムを取得する JRuby.runtime JRubyの公式ページには一切書かれてなかったんだけど・・・ JRuby-Rack Tomcat上でRailsアプリを動かす場合など... ServletContextの取得 $servlet_context または request.env['java.servlet_context'] Se…

Redmine 0.9.4をTomcat 6で実行する方法

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 …