TOPシステム開発> JRubyとRailsの連動
JRuby
JRubyを知る!

第4回:JavaEEでRailsを動かす!

著者:アスタリクス  大西 正太   2007/9/21
1   2  3  4  次のページ
JRubyとRailsの連動

   「第3回:RubyからJavaクラスを呼び出してみよう!」では、JRubyを用いてRubyスクリプトからJavaのクラスを呼び出しました。今回はJavaEEアプリケーションサーバ上でRuby on Rails(以下、RoR)を動作させ、Ruby/RoRの生産性とJavaの性能・安定性の両立を狙います。

   JavaEEアプリケーションサーバ上でRoRを動作させるためにJRuby関連ソフトウェアである「GoldSpike」と「ActiveRecord-JDBC」を用います。図1はこれらのライブラリを利用した場合の簡単な模式図です(JRubyやActiveRecord-JDBCをWARファイルに含めずに動作させることもできます)。
GoldSpikeとActiveRecord-JDBCとの連動
図1:GoldSpikeとActiveRecord-JDBCとの連動


GoldSpike

   GoldSpikeはJavaEEサーバ上でRoRアプリケーションの動作を実現します。先ほどの図1で示したように、GoldSpike自体はWARファイルにJRubyアプリケーションをパッケージングする役割を担います(WARファイルはJavaEE仕様で定められたWebアプリケーションのアーカイブ形式です)。

   GoldSpikeは表1のJavaEEアプリケーションサーバ上での動作確認がされています。

  • GlassFish
  • Jetty
  • Tomcat
  • WebLogic

表1:GoldSpikeの動作確認がされているアプリケーションサーバ


ActiveRecord-JDBC

   ActiveRecordはRoRで提供される優れたO/Rマッパーで、大きな生産性向上を実現する機能です。JDBCはJavaEE標準で定められたJavaとデータベースを接続するドライバです。データベースのオフィシャル提供元からJDBCドライバが公開されていることが多いため、一定の品質を確保できます。ActiveRecord-JDBCはこれらの橋渡しを行い、JRuby上のActiveRecordからJDBCを利用できるようにします。

   ActiveRecord-JDBCは表2に掲載しているデータベース製品での動作がサポートされています(SQL Server、DB2、Derby、Firebirdについては部分的なサポート)。

  • MySQL
  • PostgreSQL
  • Oracle
  • HSQLDB
  • H2
  • Microsoft SQL Server
  • DB2
  • Derby
  • Firebird

表2:ActiveRecord-JDBCが対応しているデータベース


環境の準備

   それではJavaEEアプリケーションサーバ上でRoRアプリケーションを動作させてみましょう。今回のサンプルではJavaEEアプリケーションサーバには知名度の高い「Tomcat」を、データベースにはRoRアプリケーションによく利用されている「MySQL」を用います。


JRubyの配置

   これまでの記事で設定した通り、「c:\work\jruby-1.0」にJRubyを配置して環境変数JRUBY_HOMEを指定します。次にMySQLをインストールします。今回のサンプルの動作確認にはMySQL 4.1.9を用いました。そのあとTomcatのインストールしてください。Tomcatは6.0.14を用いました。今回は「apache-tomcat-6.0.14」ディレクトリを「c:\work」に配置しています。

   続いてRoRをインストールします。コマンドラインから下記リストのように入力してください(インストールには数分かかる場合があります)。

>jruby -S gem install rails --include-dependencies
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rails-1.2.3
Successfully installed activesupport-1.4.2
Successfully installed activerecord-1.15.3
Successfully installed actionpack-1.13.3
Successfully installed actionmailer-1.3.3
Successfully installed actionwebservice-1.2.3
(以下略)

   Rubyには「gem」というパッケージ管理コマンドがあります。gemを用いると自動的に最新の安定版がインストールされます。今回はRuby on Rails 1.2.3がインストールされました。また「jruby -S」を頭につけて実行することで、JRuby付属のコマンドを実行することができます。ここではJRuby付属のgemコマンドを実行して、RoRのライブラリをJRubyに取り込んでいます。

1   2  3  4  次のページ


株式会社アスタリクス 大西 正太
著者プロフィール
株式会社アスタリクス  大西 正太
JavaEEフレームワークの設計構築や開発プロセス策定などの業務を経て、現在は新規ビジネス創生に携わる。Ruby on Rails上に構築したオープンソースのCMS「Rubricks」(http://rubricks.org/)のコミッタ。


INDEX
第4回:JavaEEでRailsを動かす!
JRubyとRailsの連動
  Railsアプリケーションの作成
  JDBCの設定
  アプリケーションサーバへのデプロイと動作確認