在JRuby下將RoR項目配置到tomcat詳解
由于Ruby的開發(fā)者社區(qū)不斷增長,其影響力越來越大,主流的開發(fā)平臺Java和.Net都向它拋出了橄欖枝。Sun支持了運行于JVM的JRuby,而微軟也支持了Iron Ruby項目。敏捷咨詢公司ThoughtWorks已經(jīng)發(fā)布了基于JRuby一個敏捷項目管理工具Mingle,使JRuby成為了最近社區(qū)關注的焦點。
開發(fā)一個JRuby項目對于大多數(shù)正在觀望Ruby和Rails技術的Java開發(fā)者來說是一個非常有吸引力的事情,因為這樣可以用平常所熟悉的環(huán)境去學習或者開發(fā)Ruby on Rails項目。在JRuby項目的主要開發(fā)者加入Sun的時候,Java社區(qū)JavaEye(使用Rails開發(fā))的站長robbin曾經(jīng)這樣評價Java和Ruby的聯(lián)姻:
單純從web項目的開發(fā)效率上衡量,Java已經(jīng)無法和ruby on rails相提并論,但有趣的是Java并非完全站在ruby on rails的競爭對立面。由于Ruby的第三方庫遠遠無法和Java相提并論,ruby其運行效率也無法和成熟的JVM相比,而我們知道,JVM從理論上來說,也并非可以僅僅支持Java一種語言。因而將ruby移植到JVM上面來,結合ruby的開發(fā)效率優(yōu)勢和Java豐富類庫支持,強大Java運行平臺優(yōu)勢就是順理成章的事情了,JRuby正是實現(xiàn)這一目標的框架。而Sun對于JRuby提供的強力支持,更加表達了Java與ruby攜手的決心。
在Mingle成功發(fā)布以后,JRuby的技術和產(chǎn)品都已經(jīng)更接近開發(fā)者了。但是,實際上大部分的Java和Ruby社區(qū)的開發(fā)者都還沒有實際使用JRuby開發(fā),因為這個混合技術似乎還處于神秘狀態(tài),只有少數(shù)核心開發(fā)者知道如何使用它。最近在Digital Sanctum的blog上發(fā)布了一系列和JRuby相關的文章,根據(jù)里面的指導我們可以嘗試將Ruby on Rails項目部署在Tomcat上,這個過程可以讓我們揭下JRuby的神秘面紗,下面我們看看這個過程。
首先,我們回顧一下我為什么要安裝JRuby?也就是JRuby能夠給原有的開發(fā)方式帶來哪些好處。
可以同時使用Java和Ruby的類庫(gems)
使用現(xiàn)有的Java平臺部署Ruby或Ruby on Rails應用程序
用Ruby調(diào)用或者擴展Java類的能力(包括Spring-managed Java Beans)
可以使用Ruby以不啰嗦且更有趣的方式寫代碼。
在準備好實驗JRuby后,首先需要安裝JRuby環(huán)境,這個過程比較簡單,請參考Digital Sanctum的這篇JRuby安裝指南。
然后,如果您想在JRuby上面從頭開發(fā)Rails應用,可以按照Digital Sanctum描述的在JRuby下創(chuàng)建rails項目并部署到tomcat的流程學習。
但是,如果您手頭已經(jīng)有了一個RoR的項目,則您可以關注其中關鍵的兩步:
第一步是要安裝ActiveRecord-JDBC,使用這個命令:
gem install ActiveRecord-JDBC
安裝ActiveRecord-JDBC后,需要修改database.yml,修改其中的適配器為“jdbc”并指定相應的Driver和URL。然后繼續(xù)修改config/enviroment.rb中的將連接適配器配置。
- if RUBY_PLATFORM =~ /java/
- require 'rubygems'
- RAILS_CONNECTION_ADAPTERS = %w(jdbc)
- end
您還需要將mysql-connector JDBC驅(qū)動的jar文件拷貝到/lib和/common/lib下面。
第二步,是部署到Tomcat上的最重要的一部,打包。您需要安裝一個Rails插件goldspike:
jruby script/plugin install svn://rubyforge.org/var/svn/jruby-extras/trunk/rails-integration/plugins/goldspike
然后您只需要在您的應用程序的根目錄執(zhí)行一個rake任務就可以生成war包了。
rake war:standalone:create
最后將生成的war包拷貝到您的/webapps目錄并啟動tomcat就可以看到您的RoR應用了。
這里只摘要了將RoR項目部署在Tomcat的關鍵流程,很多細節(jié)這里沒有引用,如果感興趣您可以參考原文。
因為RoR是Ruby的殺手應用,而Tomcat是Java平臺最著名的開源Servlet容器,兩者的強強結合其實預示了Ruby在傳統(tǒng)平臺(Java及.NET)繼續(xù)爆發(fā)的潛力。它允許您開發(fā)混合平臺,發(fā)揮語言和平臺各自的特長,混合或者融合(mush up)正是目前技術發(fā)展的一大趨勢。
【編輯推薦】