JRubyとは

JRuby の環境構築

JRuby On Railsの環境構築

JRoRアプリの作成

コアライブラリの利用

Javaライブラリの利用

JRoRアプリのTomcatへのデプロイ


JRubyとは

Javaで書かれたRubyの実行環境です。

JVM上で動くRubyのため両言語間のシームレスな連携を実現している点が特徴である。具体的にはRubyからJavaのオブジェクトにアクセスが可能となります。

逆にJavaからRubyにアクセスするためのAPIには、「JSR223」「BSF」などがあります。

母体となる言語は「Ruby」であり、まつもとゆきひろ氏により、1993/2/24に誕生しました。「気軽に使えて、柔軟に書ける、オブジェクト指向言語」です。

現在の最新ヴァージョンは、1.1.4 であり、Ruby 1.8.6に完全互換しています。

◆Jruby公式サイト:http://jruby.codehaus.org/

【参考文献】:『JRuby 徹底入門』

◆サポートサイト:http:///www.sotechsha.co.jp/sp/645/

 


JRuby の環境構築

◆JRubyに必要な環境

JDKのインストール

インストールされていない方は、こちらよりJDKをダウンロードしインストーラに従いインストールしてください。ここではjdk1.6.0_06を使うものとして話を進めます。

ちなみに環境変数は、

JAVA_HOME=C:\Program Files\Java\jdk1.6.0_06

とします。

Path=%JAVA_HOME%\bin;%Path%;

(※もしOracleなどをインストールする場合は、Oracleのパスよりも前に%JAVA_HOME%\bin;を通してください。)

◆JRubyのインストール

・Windowsの場合は、zipを選択

ここから最新(jruby-bin-1.1.4.zip)をダウンロードし、zip解凍して環境変数を設定します。

ここでは例として以下の環境に展開しました。

C:\jruby\jruby-1.1.4

環境変数の設定

JRubyは実は後述するRadRailsによる開発の場合、プラグインについてきます。なのでRadRailsで開発する場合には必ずしも必要がないでしょう。その場合は、実際の開発環境に合わせて設定してください。このモジュールを使うとした場合は以下のようにするといいでしょう。

JRUBY_HOME=C:\jruby\jruby-1.1.4

Path=%Path%;%JRUBY_HOME%\bin;

 


JRuby On Railsの環境構築

◆あると便利なIDE環境

EclipseのRadRails

全部そろった「pleiades-all-in-one-ultimate_20081006.zip」がお勧めです。(=>ダウンロードはこちらから。Eclipse 3.4.1 Ganymedeのultimateがお勧めです。ちなみに3.3.1のほうにはultimateでも今回使いたいRadRailsのプラグインが入ってませんでした。。。)

これを仕込めば自動的にJRubyのVMがプラグインとして付随してきます。

ここでは、eclipseの環境を以下とし、

C:\eclipse\341

eclipseでのワークスペースを以下とします。

C:\workspace\341

ここでRadRailsのプラグインが使用するRubyを選択できますが、付属のJRubyを使う場合、それは以下にあります。

C:\eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p2

これを使用する場合、環境変数の設定は以下のようになるはずです。

JRUBY_HOME=C:\eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p2

 

◆Webサーバ

開発工期においてはスタンドアロンで開発機にあればいいだろう、リリースを踏まえた場合、他機に構築して使えるようにしておきたい。

開発時点では、自機にApacheかMongrelサーバをたてて使用する。後ほどRailsアプリをTomcatに配置して動かしてみようと思う。スタンドアロンでの動作確認が済み次第、リリースマシンを準備する。リリース時期にはWebサーバ+アプリサーバ機としてCentOSを用意する。

開発時期:開発機(192.168.1.52):Apache1.3,Tomcat5.5,Mongrel

リリース時期:リリース機(192.168.1.40):Apache2.2.4,Tomcat5.5,Mongrel

開発機の準備には、個別にサーバを導入してもいいですが、そもそもRailsをやるかたは、InstantRailsがインストールされているのではないでしょうか。その場合は、Apacheなど特にヴァージョンにこだわりがなければそれを間借りしましょう。Mongrelの場合はちゃんと使用するRubyの環境に合わせてgem でインストールする必要があります。

C:\jruby\jruby-1.1.4\lib\ruby\gems\1.8\gems

もしくは、

C:\eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p2\lib\ruby\gems\1.8\gems

の内部を調べ、mongrelが入っていることを念のため確認しておきましょう。

Tomcatを準備していない方は、こちらよりダウンロードしてインストールしてください。

上記で紹介したeclipseにはTomcatのプラグインが入っているのでプロパティの設定でパスを合わせてください。もし後述のOracleXEをインストールする場合は、8080ポートを奪われないように、ここで立ち上げておいてください。

◆DBサーバ

対応しているRDBMSは多い。ここでは Oracleを使ってみようと思う。デフォルトとはRails 1.2.3ではMySQLであり、Rails 2.0.2 ではSQLite3である。Oracleでの導入例の情報は少ないが、できるだけこの環境で構築してみたいと思う。またあわせて、MySQLの環境も構築できることを確認しておきたい。RailsはマルチDBの構築を目指しているが、それが実際のところ可能なのかをここで調査していきたい。

開発時期:開発機(192.168.1.52):Orcale10g XE

リリース時期:リリース機(192.168.1.36):Orcale10g R02

まだDBを準備していない方は、開発機に使用する予定のOracleXEはこちらよりダウンロードしてインストールしてください。この時注意すべきは、後ほど使用する予定のTomcatとのポートのぶつかりあいです。これを避ける手軽な方法は、Tomcat5.5のほうを先にインストールしておき、起動して8080ポートをリスニング状態にしたうえで、OracleXEのインストーラを実行すれば、デフォルトは8081が指定されるでよう。

環境変数は

ORACLE_SID=XE

ユーザは開発用とテスト用と、あと念のためリリース用のスキーマを準備しましょう。Railsの場合DB作成までやってくれるToolがついていますが、Oracleの場合は3つのDBを作るよりも、3つのスキーマを作成するほうが現実的だと判断します。

dev01/oracle

tes01/oracle

pro01/oracle

を作成します。

作業はインストールに成功していれば以下のURLでWebからできるでしょう。

http://127.0.0.1:8081/apex/

また、リリース機へのOracleの用意は別途行ってください。

リナックス機へのOracle製品のインストールはそれなりに複雑ですので、手順を踏まえないと失敗します。ここではインストールの詳細は触れませんが、後ほど『CentOS5へのOracle10gのインストールマニュアル』の記事を書く予定でいます。

 DBサーバリリース機の情報

IPアドレス(例):192.168.1.36

ORACLE_SID=orcl

dev01/oracle

tes01/oracle

pro01/oracle

操作は以下のWebToolが便利です。

http://192.168.1.36:5560/isqlplus/

ユーザ作成などの管理Toolは以下から作業するのがいいでしょう。

http://192.168.1.36:1158/em/

 ユーザの作成

sys/xxxxx SYSDBA
管理=>ユーザの作成=>作成

スタンドアロンにしてもそうでないにしても、DBサーバを準備したら、次に OracleのClientを準備します。

ダウンロードはこちらから Instant Client

アカウントの登録をすればダウンロード可能になる。
登録後、サイト登録を行い、ダウンロードページにてサインイン。

BASICとSDKだけでもいいらしいが、念のため全部ダウンロードする。

instantclient-basic-win32-10.2.0.3-20061115.zip
instantclient-jdbc-win32-10.2.0.3-20061115.zip
instantclient-odbc-win32-10.2.0.3-20061115.zip
instantclient-sdk-win32-10.2.0.3-20061115.zip
instantclient-sqlplus-win32-10.2.0.3-20061115.zip

これを以下に解凍する。

C:\MY\TOOL\EXT\instantclient_10_2

中にあるDDLファイル一覧

heteroxa10.dll
oci.dll
ocijdbc10.dll
ociw32.dll
orannzsbb10.dll
oraocci10.dll
oraociei10.dll
Orasqlplusic10.dll
sqora32.dll
sqoras32.dll
sqresja.dll
sqresus.dll

 これを、%JRUBY_HOME%\bin以下に配置する。

C:\eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p2\bin

次にRubyのバインディングのためのOracleのOCIドライバを準備します。

ダウンロードはRubyForgeから ruby-oci8-1.0.3-mswin32.rb

C:\eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p2\bin

に配置します。

ダウンロードしたrbファイルを指定して任意のディレクトリでrubyコマンドの実行します。

C:\eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p
2\bin>jruby ruby-oci8-1.0.3-mswin32.rb
This package is for i386-mswin32
install anyway?
Enter Yes/No: yes
Copy OCI8.rb to C:/eclipse/341/dropins/Aptana_RadRails/eclipse/plugins/org.jruby
_1.1.0.5965_RC2p2/lib/ruby/site_ruby/1.8/DBD/OCI8
Copy oci8.rb to C:/eclipse/341/dropins/Aptana_RadRails/eclipse/plugins/org.jruby
_1.1.0.5965_RC2p2/lib/ruby/site_ruby/1.8
Copy oci8lib.so to C:/eclipse/341/dropins/Aptana_RadRails/eclipse/plugins/org.jr
uby_1.1.0.5965_RC2p2/lib/ruby/site_ruby/1.8/java
OK?
Enter Yes/No: y
Copying OCI8.rb to C:/eclipse/341/dropins/Aptana_RadRails/eclipse/plugins/org.jr
uby_1.1.0.5965_RC2p2/lib/ruby/site_ruby/1.8/DBD/OCI8 ... done
Copying oci8.rb to C:/eclipse/341/dropins/Aptana_RadRails/eclipse/plugins/org.jr
uby_1.1.0.5965_RC2p2/lib/ruby/site_ruby/1.8 ... done
Copying oci8lib.so to C:/eclipse/341/dropins/Aptana_RadRails/eclipse/plugins/org
.jruby_1.1.0.5965_RC2p2/lib/ruby/site_ruby/1.8/java ... done
OK

C:\eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p
2\bin>

 

◆超お手軽一括インストーラ

BitNamiJRubyStack :ダウンロード


JRoRアプリの作成

アプリの作成はeclipse上のRadRailsで行おうと思う。今回はRubyではなくJRubyを使う点と、あらかじめ他のInstantRailsとかの開発環境が混じっているとgemなどで問題を生じるので、環境変数Pathを確認する。ここは念には念を。再確認します。

C:\eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p
2\bin>echo %Path%
Path:=C:\oraclexe\app\oracle\product\10.2.0\server\bin;C:\InstantRails20\mysql\b
in;C:\Program Files\Java\jdk1.6.0_06\bin;C:\WINNT\system32;C:\WINNT;C:\WINNT\Sys
tem32\Wbem;C:\eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.
0.5965_RC2p2\bin;

プラグインのほうのJRubyが優先されていることを確認。(コンソールで作業するケースが出てきた場合にここが重要になる。)

eclipseの設定の確認

 

プロジェクトの作成

プロジェクト名:JRoROra01

 プロジェクトのソースの雛形を一括作成後、自動的にサーバが立ち上がっています。

http://127.0.0.1:3006/

まだ対応する画面もテーブルも作成していないので、Topページのみの動作確認です。

次に通常はDBを作成します。

たいていの場合は、「rake db:create」にてDB自体を生成しますが、今回のOracleの場合は、この手順は割愛し、既存のインストール時のDBを使用することにします。

scaffoldします。

scaffold
todo limit:timestamp title:string detail:text

 

MVCアーキテクチャの対応ソースが一気にでき、更にマイグレーションファイルもできあがっています。中身を確認します。

 class CreateTodos < ActiveRecord::Migration
  def self.up
    create_table :todos do |t|
      t.timestamp :limit
      t.string :title
      t.text :detail

      t.timestamps
    end
  end

  def self.down
    drop_table :todos
  end
end

 次にいよいよ、DBにテーブルを作成しますが、その前にDBへの接続条件を確認します。

development:
  adapter: oracle
  database: 192.168.1.36/orcl
  username: dev01
  password: oracle

test:
  adapter: oracle
  database: 192.168.1.36/orcl
  username: tes01
  password: oracle

production:
  adapter: oracle
  database: 192.168.1.36/orcl
  username: pro01
  password: oracle

 念のためクライアントPCからDBサーバ側へSSH接続するなりして疎通確認を行います。特に1521番ポートは使用するので、ちゃんとポートがLISTENING状態であり、F/Wにおいても開放されていることを確認しておきます。

[root@vm36 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:C8:19:70
          inet addr:192.168.1.36  Bcast:192.168.1.255  Mask:255.255.255.0

...

[root@vm36 ~]# netstat -na | grep 1521
tcp        0      0 0.0.0.0:1521                0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:31502             127.0.0.1:1521              ESTABLISHED

 ここで、db:migrateを実行する。

 

 

 

 


コアライブラリの利用


Javaライブラリの利用


JRoRアプリのTomcatへのデプロイ

最終更新:2008年10月21日 23:40