「JRubyでOracleにアクセスするための方法」

用意する物

  1. JDK
  2. JRuby
  3. JDBCドライバー

手順

JDKをインストールする。

例)/usr/local/jdk1.5
一緒にJAVA_HOMEを設定しておく。

JRubyをインストールする

例)/usr/local/jruby-1.0.1
一緒にJRUBY_HOMEを設定しておく

JDBDドライバーをインストールする

JDBCドライバーは、環境変数としてCLASSPATHに設定するか、JRUBY_HOME/lib配下にjarファイルを置きます。

JRubyのサンプルコード

ここでは、Oracleに対して接続を行っています。

#!/usr/bin/env ruby

require 'java'

begin
  java.lang.Class.forName('oracle.jdbc.driver.OracleDriver').newInstance
  con = java.sql.DriverManager.getConnection('jdbc:oracle:thin:@localhost:1521:ORCL', 'SCOTT', 'TIGER');
  stmt = con.createStatement
  rs = stmt.executeQuery("select * from emp")
  while rs.next
    puts rs.getString(1)
  end
rescue => ex
  puts ex
ensure
  con.close if con
end

感想

 これが出来るとわかった時は、正直感動しました。
 JavaJDBC接続を書いたことある人であれば、サンプルコードはすんなり理解できると思います。Javaのコードをほぼそのままコピーしていますから。ここではselectしか書いていませんが、同様にupdateなども行えます。
 Javaで書いた時と違い、「main関数不要」「型宣言不要」「ensureでの例外処理不要」「コンパイル不要」という、お手軽さ。Javaの厳密さは確かに素晴らしいですが、ちょっとしたコードを書く場合には、非常に「重い」です。しかし、JRubyであれば、その「重さ」を現実的な範囲で軽くすることが出来ます。Javaのコードをちょっと手直ししただけで、動かせるわけですから、使わない手はないです。

 以前、RubyOracleに接続することは試しましたが、事前準備が面倒だという思いが正直ありました。しかし、今回のJruby+JDBCというのは、前準備を限りなく無くしてくれます。RubyJavaのthinドライバーによるDB接続というのは、もっと評価されて良いと思う。
 JRubyJavaも、ファイルを展開して、環境変数を設定すればインストールが完了するという手軽さはかなり魅力です。例えば、すでに稼働中のサーバでRubyを使いたい。でもそのためには、稼働中のサーバに対してインストール作業が発生する場合、JRubyであれば、インストールが簡単で、影響範囲も小さいので、リスクがかなり減らせます。RubyJRubyの互換性がどの程度か、パフォーマンスはどうなのかという問題はありますが、そこが許容できるのあれば、かなり良い解決策になると思います。