JRuby on Rails 遷移經驗總結

2021-08-23 13:07:48 字數 1496 閱讀 8010

最近由於一些原因,想把手上的乙個專案從cruby遷移的jruby上來,其間遇到了一些問題和疑惑,寫下來與各位分享和**。

1.專案概況

原配置: rails 2.2.2,ruby 1.8.7,oracle 9.2.0.6,部署用nginx+mongrel_cluster

現配置: rails 2.2.2, jruby 1.1.6,jdk 1.6.0_10,oralce 9.2.0.6, 伺服器用glassfish v3 (glassfish gem 0.9.2)

2.移植過程中的問題

a. 資料庫(字段型別問題)

原來的資料庫連線用ruby-oci8 + activerecord-oracle-adapter。因為jruby不支援c擴充套件,所以只能改為activerecord-jdbc-adapter + ojdbc14.jar。其實jdbc的更加方便,不需要再安裝oracle客戶端了。但在實際遷移中卻遇到了另乙個問題:find_by_sql在cruby中返回的資料集,字段型別可以根據資料庫字段型別自 動轉換,而不管查詢的字段是不是在model中。但在jruby中,此方法返回的資料,如果欄位名不在model中,則統一返回字元型。這個差異使**執行時產生了很多異常。只能手工更改,花費了許多時間。

b. libxml-ruby 與 libxml-jruby

c.效能問題

在這方面jruby就完全辜負我的期望了,平均速度比ruby 1.8.7 慢了1.5-2倍不等。在生產環境下也要慢1.2-1.5倍。當然這是在window上的測試結果,在linux主機上是不是會有所改善,還沒有詳細測試。

d.多執行緒

rails2.2 以後支援多執行緒了,而jruby的本地執行緒更是一大優勢。所以我自然要測試一下多執行緒的工作模式了。可在開啟多執行緒後,伺服器啟動就出錯了。經查閱資資料得知,多執行緒模式中lib目錄下的檔案不會被自動load,必須要手工require。不過這也沒什麼,不就是改2行**嗎。但致命的問題是很多外掛程式沒法工作了,比如說activescaffold就完全熄火了。看來rails多執行緒支援還有很長的路要走。

3.總結

沒有遇到無法解決的問題。**也只要稍做修改。效能問題是影響移植的主要障礙。多執行緒模式還不成熟。

4.疑問

a. 在原來的部署中rails通過mongrel_cluster開啟多個程序來響應請求。那在glassfish的方式中,只有乙個程序,那請求繁忙時,會不會自動增加rails程序。而且沒有開啟多執行緒的情況下,如何同時響應多個請求?

經查閱glassfish文件,已經得到了答案。glassfish會根據配置啟動多個rails例項來響應請求。

b.glassfish gem 和 glassfish 伺服器在效能上差別有多大?

c.如何優化jruby on rails的效能?

以上疑問,還請高手解惑。

Jruby on Rails 安裝配置

主要是通過gem 來安裝 jruby s gem update system首先安裝這個,不然會每次都警告一下 c jruby s gem install jruby openssl jruby limited openssl loaded.gem install jruby openssl for...

NOKIA筆經 面經

今天應該是畢業找工作生涯的最後一次面試了,發個筆經面經,為後來人 鋪路.我面的是radio network planning。筆試 海選,通過chinahr出的一組能力測試題篩選。好像篩了不少人。題目包括詞語填空,閱讀理解,圖形,數字題,基本數學題,題。一面 面試官為應聘職位的部門經理。基本上為中文...

面經和菜經

tencent面經 面試前一天晚上要休息好,精神養好 提前準備充足,包括服裝,簡歷,了解好公司的相關資訊 找工作一定要定位好合適的工作,把握不大的不要過去浪費時間 面試的時候一定不能緊張,回答問題一定要有明晰的思路 炸丸子經 所有材料事先備好,一切準備妥當,規劃好攪拌的順序 用筷子夾麵糰的時候,要用...