木曜日 8 21, 2008
木曜日 8 21, 2008
先日、v3 Prelude の管理コンソールのセットアップに引き続き、また Prelude ネタです。
Prelude リリースは、Java EE 5 ベースの web 層、JPA を GlassFish のモジュラーカーネルに載せたものです。このカーネルは本リリースから OSGi をサポートし、Felix の実装を使っています。また、アップデートセンターを通じて、Java EE 6 の新規 API や、いくつかのコンテナを簡単に追加することができます。なので、EJB 3.1 や JAX-RS など試せるわけです。EJB 3.1 については、JavaOne の時に出た v3 TP2 (テクニカルプレビュー 2) のタイミングで、ご紹介しましたが、Prelude でも同様に試せるはずです。今回はアップデートセンターにある JRuby コンテナを入れて、Rails を試しました。
まずは起動します。--verbose オプションをつけて起動すると色々な情報がみれるのですが、以下のように、OSGi モードで起動していることが確認できます。
% ./bin/asadmin start-domain --verbose 2008/08/20 16:26:41 com.sun.enterprise.admin.launcher.GFLauncherLogger info : : 情報: Successfully launched in 1,858 msec. 2008/08/20 16:26:43 com.sun.enterprise.glassfish.bootstrap.ASMain main 情報: Launching GlassFish on Apache Felix OSGi platform 2008/08/20 16:26:44 com.sun.enterprise.glassfish.bootstrap.ASMainOSGi getSharedRepos
EJB3.1 の時と同様に JRuby をアップデートセンター経由で入れます。37MB と結構大きいし、ファイル数が多いので、ダウンロード、インストールにそれなりに時間かかりました。ここら辺が追加されます。
% ls glassfish/modules |grep ruby gf-jruby-connector-0.6.15.jar grizzly-jruby-1.7.9.jar grizzly-jruby-module-0.6.15.jar jruby/
では、さっそく空っぽのアプリを作って配備してみます。もちろん NetBeans を使う (設定や10 分でアプリ作成のチュートリアル) のが、ツールによる支援を色々受けられ便利なのですが、あの、rails を最初に見たときのターミナルでひょこひょこっとスキャフォルドを作ったり、変更、リロードの短いサイクルもなかなか楽しかったので、今回は NetBeans なしでやってみます。もっとも rails も 2.0 になってたり、どっちみち覚えてなかったりですが。こんな感じ。
% setenv JRUBY_HOME <v3 インストール>/glassfish/modules/jruby
% set path=($JRUBY_HOME/bin $path)
% chmod +x jruby
% jruby $JRUBY_HOME/bin/rails test_app
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
:
: 省略
:
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
% asadmin deploy test_app
Command deploy executed successfully.
これだけ。で、あの見慣れた画面が開く。
ログにも rails のインスタンスプールがスタートされている旨メッセージがで てきます。
2008/08/20 18:15:03 com.sun.grizzly.jruby.RailsAdapter startRubyRuntimePool 情報: Starting Rails instances
ちなみに rails アプリケーションの上のようにディレクトリ配備する以外にも、Goldspike プラグインなどを使って、web アプリとして配備することも可能 (v2 だとこっち) だが、違いは、HTTP コネクタから直接 rails のインスタンスにリクエストが渡され、servlet の処理がバイパスされること。ここら辺は、英語で長いけど、下記に結構詳しく書いてあります。
あと、今回はふれませんが、glassfish gem というのもあって、つまり gem としてインストール、利用できるサーバとしても glassfish は提供されている (Arun さんの記事を gem タグでみるとよい) ので、こちらもご興味あるかたはぜひお試し下さい。
あとは DB 接続を database.yml 内の adapter を変えるくらいで、C の Ruby on Rails と同じ様に使えると思います。ちなみに activerecord-jdbcmysql-adapter はアップデートセンタで JRuby 入れるとインストールされているので jdbcmysql とするだけで使えましたが、その他のものは gem を自分でとってくるかドライバを指定する必要がある様です。下記参照。
さて、ここまできたら、あとは、「J」Ruby らしく使いたいところですね。
あと、Kana さんが翻訳を進めてくれている下記ページには日本語情報が盛りだくさんです。すばらしー!どうもありがとうございます。