現在用 RoR 開發上線網站 OK 嗎?

RoR 在這一兩年間突然爆紅,我也 K 了一兩本書、試著開發一兩個網站,DRY 的精神的確讓我驚豔,透過 ActiveRecordORM,使我在網站時幾乎沒有寫到一行 SQL code(雖然我在 Hibernate 中也體驗過了 XD),在資料運算處理上面真是愉快到一個不行,同時,一些「常用」(注意,我用了「常用」這個詞...)的機制也都有熱心的網友們開發了 plugins 可以立刻用兩三行 code 解決幾十甚至幾百行的 code。不過,體驗過一陣子 RoR ,我有時也會懷疑「現在用 RoR 開發上線網站 OK 嗎?」

我的問題第一個重點是「現在」,之所以會這樣想,是覺得現在 RoR 能參考的資料實在是不太多,雖然大家都知道 AWDWR 是聖經,寫 RoR 的人都應該先看過這一本書,我本身也看過第一版及第二版,這本書寫得真的很棒!但也因為這樣,很多人的作品就變得如出一輒,一直用 Rails 預設、內建或是書上範例,甚至能用 Google 找到的網頁,某些機制的作法通通是源自同一份 tutorial,比方說我想找關於上傳圖片然後用 RMagick 處理一下,再塞到資料庫的一些範例,Google 出來的全部噴給我 file_column 的用法(好吧!也許是我 keywords 下得不好),但其實我想作的就跟它不一樣啊!所以我就在想:

會不會很多人對 RoR 根本就還一知半解就開始寫網頁,結果所有的功能、機制都自動妥協「能找到」的範例,而不是看怎麼用 RoR 來作到自己想要的動作呢?

所以就會有愈來愈多像 XDite 大大所提到的狀況,愛套範例的開發者,應該要更謹慎一點才是!

除了範例容易讓開發者深陷泥沼外,「過份」的宣傳也會讓一些開發者迷失方向。目前的 Rails 準備了很多 JavaScript 的 helper function,同時又事先把 Prototype.jsScript.aculo.us 這兩套 JavaScript framework 包好,所以在看許多 RoR demo 的時候,總是有許多人會被「誤導」成:「RoR 開發網頁特效也很快喔!」。結果用起來才發現世界不是那麼美好的,不熟悉 JavaScript 你也很難運用這些 framework,更何況,真要開發 RIA,應該去考慮一下 GWTFlex 可能還比較好(更何況都有 Flex on Rails 了...)。

至於第二個重點就是「上線網站」,我其實不是要 argue RoR 的效能,反正這個問題可以砸錢買機器設備解決(有人說過,能直接用錢解決的問題就不是問題,比方說有錢的公司就不會去 tune MySQL 而會直接買 Oracle)。其實理由就跟上述的一樣,上線網站其實重要的是網站上線後的維運,不管 RoR 開發多快速,網站上線後就是要維運,在大家經驗都少、支援少,說不定對於 RoR 的瞭解也很少的情況下,萬一發生了萬一,或是要做功能上的擴充,開發人員是不是都準備好了呢?固然新的 plugins 不斷出現,但天曉得 bugs 是不是也不斷湧出,而且這種 open source 的 project(某個 plugin),萬一 community 不大,作者最後不維護了,出了問題你也不可能叫他負責,還不是要自己想辦法。這時候就會想到 Qing 學長的經驗談:「開發上線系統最好用前一或前兩個世代的技術。」我想「穩定性」或許才是上線系統最該優先考量的問題。

雖然我現在覺得用 RoR 來 production 不是最好的選擇,不過我還是很看好 RoR 的發展(廢話),也很同意曾經聽過 thegiive 大大演講提到,過去寫網站的開發人員跟 PM 總是難以溝通,用 RoR 開發快速的特性,可以很快兜個 prototype 出來方便討論,也是可以大幅減少開發過程中討論的時程,而且也會更精準地瞭解彼此的想法(吧?)。只是,若非要(或不得已)拿 RoR 來 production 的話,開發人員應該要好好地學 Ruby 跟 Rails,不要成天想著東套西套就能套出上線系統,那除了網站安全是個危機之外,其實這個網站也就沒有什麼核心技術(或價值)了。

  • Pingback: University Update - Open Source - ??? RoR ?????? OK ??()

  • Flex on Rails 最大的好處之一就是 xdite 講的那些問題絕對不會出現啊(完全沒有REST 很難用他的方法見縫插針攻進去),這應該算是附加好處吧~~ XD

  • 我也很想知道除了file column之外還有什麼適合拿來處理相關問題的範例。

  • Wraecca: 嗯…自己寫一個就OK了 XDD

  • Leeheng

    其實…有錢公司也會用MySQL的
    比如說…yahoo?

  • Leeheng:
    其實我應該強調是”不太會養專門的人去 tune DB”的有錢公司 XD

  • thegiive

    「上線系統」的嚴謹性 level 到那個程度,看來需要好好的定義一下了。不過 web 2.0 的系統需要的 production level 毫無疑問是最低的 :p

  • thegiive: 恭喜在關西第一次放假 XD
    希望改天能再聽到你講演

  • Rex

    對RoR有興趣的話,可以考慮一下參加12/11,13的CodeGear 3rdRAIL產品發表會,http://www.sinter.com.tw/seminars/CG_3rd_rail.html
    李維老師(CodeGear大中華區技術總監)除了針對RoR開發所推出的新產品介紹外,也會提供RoR的開發特性、範例說明。