With CRuby
LuRuJu-0.2.0より、CRuby上でもJUDEのモデル情報をロードできるようになった。ここでは、CRuby上でLuRuJuを利用する方法を紹介する。
前提条件
- JRuby上でLuRuJuが動作する状態になっている。Install LuRuJu を参考にするとよい。
- jrubyにパスが通っている。
Ruby,gemのインストール
各自の環境にあわせ、Rubyとgemをインストールする。詳細は割愛するが、筆者はRubyForge よりOne-Click Ruby Installerをダウンロードしてインストールした。
以下のコマンドで動作確認ができる。
>ruby --version
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
>gem --version
0.9.2
LuRuJuのインストール
CRubyのgemにLuRuJuをインストールする。インストールするLuRuJuのバージョンはJRuby上にインストールしたバージョンと合わせておく。(JRubyとCRubyが同一GEM_HOMEで、すでにインストール済みであればインストールの必要はない)
>gem install luruju
依存ライブラリActiveSupportがインストールされてなければ、インストールするかどうか きかれます。ここではYを押してActiveSupportもインストールします。(-yオプションをすれば確認を求められない)
以下のコマンド実行すると、インストールされたことが確認できます。
>gem list -l luruju
*** LOCAL GEMS ***
luruju (0.2.0)
>jruby -S gem list -l luruju
*** LOCAL GEMS ***
luruju (0.2.0)
2つの実現方式
JUDEが提供するAPIはJavaベースなので、CRuby上での動作を実現するためにLuRuJuライブラリ内部でJRubyを経由している。 LuRuJuでは、CRuby-JRuby間の通信方式として以下の2つを用意している。
- dRuby(デフォルト)
- コマンド
これらはConfigurationで切り分けることができる。 両者の簡単なメリットデメリットとしては、dRubyを使用すると、いったんdRubyサーバさえ起動すれば、JUDEファイルのロード時間はかなり短縮される。ただし常駐プロセスとして常にメモリは消費する。コマンドの場合はJUDEファイルをロードするとき以外はjrubyのメモリは使用しないが、ロードする度にjrubyコマンドが起動するのでロード時間が結構かかってしまう。
dRubyを経由したモデル情報のロード
dRubyを経由したCRubyでのロード方法を説明する。以後、dRubyサーバをLuRuJuサーバと呼ぶ。
LuRuJuサーバの起動・停止するために、Rakeタスクが提供されている。以下の記述内容を含むRakefileを用意する。
用意したRakefileがあるディレクトリ上で以下のコマンドを発行して、LuRuJuサーバを起動する。LuRuJuサーバは必ずJRubyで起動する。
>jruby -S rake luruju:server:start
(in C:/tmp)
start LuRuJu Server URL=druby://127.0.0.1:3937
以上でCRubyを使用する準備は完了となる。
サンプルコードで動作確認してみる。 以下のRubyファイル(sample.rb)を作成する。またJUDEファイル(sample.jude)を準備する。
CRubyを実行すると、クラス名の一覧が表示される。
>ruby sample.rb
"Customer"
"Order"
"OrderedItem"
"Item"
"GeneralCustomer"
"Delivery"
"DeliveryCenter"
"CorporateCustomer"
LuRuJuサーバ経由でモデル情報が読み込まれており、LuRuJuサーバの標準出力に以下の内容が表示される。
start loadding sample.jude
end loading
LuRuJuサーバを停止するには、以下のRakeタスクを実行する。停止するときはJRubyでもCRubyでもかまわない。
>rake luruju:server:stop
コマンドを経由したモデル情報のロード
コマンドを経由したCRubyでのロード方法を説明する。
モデル情報をロードする前にConfigurationでコマンドを利用する設定を行えばよい。(設定についてはConfiguration も参照のこと)
先ほどのサンプルコードをもとに動作確認してみる。 Rubyファイル(sample.rb)の内容にConfigurationを追加する。
CRubyを実行すると、クラス名の一覧が表示される。
>ruby sample.rb
"Customer"
"Order"
"OrderedItem"
"Item"
"GeneralCustomer"
"Delivery"
"DeliveryCenter"
"CorporateCustomer"