淺析Ruby的備選Web開發框架Cuba

douxingxiang發表於2015-04-10

開始之前,我們先說說Rails這頭大象。Rails非常棒。它大部分時間絕對是你構建大型產品應用所需的。它有段歷史了。如果你剛開始使用Ruby做Web開發,很有可能Rails是你最熟悉的。這些都表明Rails作為多數專案的選擇是合理的。

這篇文章的觀點不是…拋棄(抱歉,忍不住!)我們所熱愛的Rails。主要目標是提供你可能意識或沒有意識到的備選框架。有些人專注小規模專案,其他人快速原型,但所有人,都可以使用Ruby。希望你可以在探索把Ruby這個出色語言應用到web領域的框架和微框架的過程中能夠找到樂趣。

Cuba微框架

Cuba是目前Ruby開發者接觸微框架的最簡單途徑之一。Cuby由Michel Martens編寫,關鍵點在於簡潔。這個微框架的設計目標是構建和部署簡單應用,去除了膨脹而非必須的功能,從而避免了大規模開銷之憂。

類似其他很多微框架,Cuba基於Rack。Rack最小化了支撐Ruby的web伺服器和框架本身之間的互動。這有助於提升應用的響應時間,使得使用Cuba這類框架變得非常簡單。

文件是Cuba最棒的部分之一。線上的演練引導讓每個人都可以學習利用Cuba的功能。學習了引導不久,你就可以自己搭建一個類似Twitter的應用Frogger。在這之後,你應該已經熟悉Cuba了,應該可以在你自己的專案中使用了。

除了這個演練引導,還有個小應用可以測試在伺服器上配置Cuba。

Trailblazer

Trailblazer是Ruby朋克搖滾歌手Nick Sutterer最新奉獻的禮物,雖然技術上講不是個框架。它背後的思想是通過增強封裝、採用更直觀的程式碼結構來幫助Rails框架更高效。它提供多層抽象使得Rails更簡單。

由於Trailblazer並不是真正意義上的框架,我們就不過多討論,但是我們說它讓Rails更易用。它易於實現,這裡有本未完工的書。

Volt

Volt是很多Ruby開發者腦海中的又一個新框架。Volt專注在構建快速應用,而不是瞎忙活,它讓應用跑得更快。Volt使用持久連線而不是通過HTTP同步資料。Volt快速的部分原因就是它建立在Opal之上,Opal將Ruby方便地轉換為JavaScript,是個很棒的模組。

目前Volt一點不方便之處是它只支援MongoDB。雖然MongoDB是個不錯的資料庫方案,但它不一定是你中意的。

Cramp

是不是在尋找非同步型別的框架?可能Cramp就是你要找的。Cramp建立在Event Machine之上,設計目標是工作在有大量連線環境下,提供全雙工雙向通訊。

Cramp需要也Rack支援,使用Ruby 1.9.2及以上版本,你只需要安裝這個gem就可以開始了。如果你熟悉使用Ruby構建簡單應用,Cramp採用的風格也不會讓你感到陌生。它們的例子簡單易用。

Cramp另一個出色的特性就是包含應用生成器。在控制檯敲入cramp new realapp就可以生成一個新Cramp應用。

Ramaze

Ramaze建立在古老的KISS(Keep It Simple, Stupid)原則之上,這個框架看似只做:移除複雜度,讓事情更簡單。Ramaze與不同ORM、介面卡(如UnicornPassenger)一起工作,以及Ruby的各種實現,如JRubyRubinius。如果MRI是你最愛的Ruby風格,也許Ramaze是你的框架選擇。

Ramaze快速、靈活,比起這裡提到的其他框架更有優勢。另一個優勢是它與其他框架的功能很相像。比如,如果你熟悉Sinatra,Ramaze也不會太難學。

Sinatra

我曾仔細對比過Sinatra vs. Rails,也許不止一次。Sinatra是我大多數小專案的選擇。由於Sintra的用法在那篇文章中基本都被覆蓋到了,我們可以關注更小的事情。這裡有一篇Konstantin HasseAlmost Sinatra。(絕對不要在任何地方上使用Almost Sinatra。)Sintra設定很簡單,Engine Yard上線了很多Sinatra應用。

Lotus

看了這麼多,你可能還在尋找類似Rails的框架。Lotus就是,它由Luca Guidi編寫,是一個完全的erb框架。Rails和Lotus的主要區別在於Lotus的輕量級,對於那些對Rails的龐大很失望的人會很有吸引力。

Lotus是個完整的MVC框架,做的就是MVC做的事,所以轉換並不是很大。它的缺點是還不夠成熟:它還不適於生產應用,但接近了。

結論

我們介紹了一些除Rails之外Ruby開發者可以選用的框架。再次說明,這不是要大家放棄Rails。但是我認為,開闊視野、嘗試新東西是很好的。如果你準備在生產環境中好採用其中一個框架,我們的支援團隊會很樂意提供幫助。

P.S. 你是否曾嘗試過這些框架?我們是否遺漏了你最愛的框架?在下面給我們留言。

相關文章