続いて、前編で作成したToDo管理アプリケーションを、Tomcat上で動かすためにwar(Web Application Resources)ファイル化します。
アプリケーションをwarファイル化するには、前述のWarblerを利用します。WarblerはRailsアプリケーションをwar化するGoldspikeをラッピングする形で作成しています(Warbler 0.9.5)。Goldspikeはwarファイルを作成するときにJavaサーブレット標準のフォルダ構成に準拠しない構成でwarファイルを作成してしまいます。一方、Warblerは動的ファイルを「WEB-INF」フォルダ以下に配置し、「.svn」「test」といった不要なファイルをwarファイルに含めません。
手順は以下のとおりです。
warbler.rbを作成するには、コマンドプロンプト上でwar化したいプロジェクト(例、ToDoManager)に移動して、以下のコマンドを実行します。
> jruby -S warble config |
コマンドが成功すると、「ToDoManager\config\warble.rb」ファイルができます。
続いて、warble.rb中の赤文字の部分を編集して、作成するwarファイルのRailsのバージョンや含めるパッケージの設定を行います。
# Warbler web application assembly configuration file |
最後に、warファイルを以下のコマンドで作成します。
> jruby -S warble war |
成功すると、「プロジェクト名.war(例、ToDoManager.war)」ファイルができています。
なお、warを作り直す場合は以下のコマンドを実行してwarファイルのために一時領域を削除します。
> jruby -S warble war:clean |
warファイルを作ることができたら、いよいよTomcat上にデプロイしましょう。warファイルさえ作成しておけば、デプロイ作業は非常に簡単です。Tomcatインストールフォルダの「webapps」フォルダに作成したwarファイル(ToDoManager.war)をコピーするだけです。
このときDerbyと接続するので、RadRailsを起動しておいてください。RadRailsを起動すると、Derbyが起動します。
ここでTomcatを起動します。Tomcatが起動したらすぐに動作を確認したいところですが、このままではアプリケーションは動作しません(Warbler 0.9.5の場合、※注2)。WarblerのベースになっているGoldspikeがRuby on Rails 2.0の新機能である「Cookie Session Store(Cookieを使うセッション管理)」に対応していないためです。
回避するためには、web.xmlを編集する必要があります。Tomcatのインストールフォルダにある「【プロジェクト名】/WEB-INF/web.xml」に以下の行を追加します。
<context-param> |
毎回warファイルを展開した後に上記コードの追加を行うのが手間な場合は、Warblerでwarファイルを作成するときに静的なweb.xmlを渡すことが可能です。「【プロジェクトルート】/config」フォルダに上記コードを追加したweb.xmlを置いておくことで、次回からwarファイルを作成したときに自動的に含めます。
※注2:2008年7月現在の最新版であるWarbler 0.9.9では、WarblerのベースがGoldspikeからJRuby Rackに変更されているため、すでに対応済みです。ただし、RadRailsに同梱されるJRuby 1.1 RC2では動作が不安定なので、注意してください
web.xmlを編集したら、Tomcatを再起動します。Tomcatが起動したのを確認したら、【プロジェクト名】/【アプリケーション名】のURLにアクセスします(例、http://localhost:8080/ToDoManager/todos)。すると、Tomcat上でToDo管理アプリケーションが動作していることを確認できます。
本稿では、前編・後編と2回にわたってJRuby on Railsを紹介しましたが、いかがでしたか?
JRuby on Railsのメリットに注目して紹介してきましたが、まだまだ商用レベルでの実績は少なく、安定性に欠ける部分もあるかもしれません。しかし、RubyやJRubyで開発実績のある伊藤忠テクノソリューションズと帳票ベンダのウイングアーク テクノロジーズが、2008年7月14日からエンタープライズ市場を対象にJRubyを利用した帳票ソリューションの共同展開を開始するという発表もありました(参考)。JRuby on RailsはこれからもRubyとJavaのイイとこ取りをしながら発展をしていくことでしょう。
RadRailsを使えば、手軽にJRuby on Railsを試すことができますので、皆さんもJRubyでRailsに乗ってみませんか?
@IT関連記事
JRuby on RailsやJava EE開発に便利なNetBeans
Eclipse対抗馬の本命!? NetBeansとは?(後編) NetBeansはDB連携やWebアプリケーション、いま注目のJRuby on Railsの開発も簡単で、便利な機能がてんこ盛り
「Java Solution」フォーラム 2008/3/17
(Java+Derby)* Ruby on Rails プログラミング
小山博史のJavaを楽しむ(4) 世の中には、JavaなまりのRubyである「JRuby」という言語がある。しかも、それがRailsで使えるとなると……。試してみない手はないだろう
「Java Solution」フォーラム 2007/2/7
Ruby On Railsのチームに学ぶ仕事術
安藤幸央のランダウン(30) 素早い開発を提供するRuby On Rails。その開発チームも、優れたツールの活用でRuby On Railsのスピーディーな開発を実現している
「Java Solution」フォーラム 2006/3/25
WebプログラマはRailsに乗るべきか?
安藤幸央のランダウン(29) 日本で産まれたスクリプト言語Ruby。そのWebフレームワークとして海外から登場したRuby on Railsは驚異的なRADを提供するという
「Java Solution」フォーラム 2006/2/11
スクリプト言語をサポートするEclipseプラグイン
CoolなEclipseプラグイン(10) EclipseはJava以外の言語もサポートする。今回はPerl、Ruby、Pythonなどのスクリプト言語をサポートするプラグインを紹介する
「Java Solution」フォーラム 2006/2/25
JavaエンジニアのためのRuby入門
何だか盛り上がっているRuby。「でも触ったことないし」とためらうJavaエンジニアの皆さん! この2つ、実はよく似ているのです
第1回 Javaエンジニアにこそ、Rubyの良さが分かる
第2回 JavaとRubyの共通点と相違点
第3回 Strutsの知識を基に、Ruby on Railsを学ぶ方法
自分戦略研究所 > スキル創造研究室
Copyright © ITmedia, Inc. All Rights Reserved.