ogino's blog
Archives
« 11月 2009
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
     
       
Today
Click me to subscribe
Search

Links
 

Today's Page Hits: 100

« v3 Prelude 管理コンソール | Main | Felix に Fragment... »
木曜日 8 21, 2008
v3 Prelude で Rails

先日、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_welcome

ログにも 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 さんが翻訳を進めてくれている下記ページには日本語情報が盛りだくさんです。すばらしー!どうもありがとうございます。

Posted at 03:21午後 8 21, 2008 by Shinya Ogino in Sun  |  Comments[0]

Comments:

Post a Comment:
  • HTML Syntax: NOT allowed