JRuby on Rails: Java Application Server Deployment

既然使用了 JRuby ,自然會想到應該要能 deploy 到現有的 Java Application Server (e.g., JBoss AS, BEA Welogic, Apache Tomcat, etc.)上面,還有有許多人的努力,現在要把 JRoR 的 project deploy 到 Java AS 上也不是什麼難題了。

首先,你的系統中必須有安裝 Maven 2

當你用 Rails 產生 project 之後,使用下列指令裝上 GoldSpike 這個 plugin:
[code]
# jruby script/plugin install svn://rubyforge.org/var/svn/jruby-extras/trunk/rails-integration/plugins/goldspike
[/code]
接下來,確定你有安裝了 ActiveRecord-JDBC ,然後到參考上一篇「JRuby on Rails 注意事項」設定好 config/environment.rbconfig/database.yml,除此之外要注意的是,deploy 上 AS 的 RAILS_ENV 是設定成 production 而不是 development,所以 config/database.yml 的設定要弄對。

大部份的人都採用 MySQL 作為資料庫系統,而 JRoR 又是透過 JDBC 來連接資料庫的,所以在包裝成 WAR 檔時也要加入 mysql-connector-java 這個 JDBC driver,所以我們要在 vendor/plugins/goldspike/lib/war_config.rb 中一排 add_java_library 下加上一行:
[code lang="ruby"]
add_java_library(maven_library('mysql', 'mysql-connector-java', '5.0.5'))
[/code]
這樣包成 WAR 檔時才會自動把這個 driver 包進 lib 裡。

一切準備就緒後,就在 $RAILS_APP_HOME (也就是你的 Rails application 目錄)下執行:

rake war:standalone:create

這樣 GoldSpike plugin 就會幫你產生一個可以 deploy 到 AS 上的 WAR 檔。

只要你把這個 WAR 檔 deploy 到 AS (如:Apache Tomcat)之後,就可以把這個 Rails application 當成是一個 Java Web Application 來執行了。