天天看點

幾種實用型Ruby Web開發架構介紹

  大家在通過對Ruby的學習後,都知道,Ruby on Rails是一款性能非常優越的Ruby Web開發架構。但是其他的Ruby Web開發架構又有多少人知道一二呢?

  迅速掌握Ruby檔案鎖概念

  Ruby操作檔案權限技巧分享

  Ruby will_paginate知識堂

  詳細解讀Ruby輸出檔案資訊實作方式

  Ruby元程式設計構造簡單優雅解決方案

  Rails盡人皆知,有人甚至可能聽說過Merb和Camping,但是否有人知道Nitro、Ramaze、Sinatra、IOWA或者Cerise?本文對這些架構進行一個快速浏覽,并試圖解讀他們為業内人士欣賞(或忽視)的原因。

  之前我們讨論過Merb,這也許是完成度最高的Rails替代者。Merb項目的活躍程度非常高,并且在一些情況下得到了實際使用。可以說它是與Rails最為接近的Ruby Web開發架構。

  Camping将自己定義為一個代碼量保持在4k位元組大小以下的Web開發架構。這個項目已建立了22個月,并由whytheluckystiff維護。一個完整的web應用可以在單一檔案中定義,同時遵循MVC架構(這使得web應用以後更易于移植到Rails之上)。Camping使用ActiveRecord作為ORM解決方案;模闆系統使用Markaby。Camping的開發一直以穩定的步伐向前推進。

  Nitro是一個有三年曆史的“Web 2.0”架構。在一段時間銷聲匿迹之後,開發者George K.Moschovitis又開始活躍起來。Nitro應用的伺服器端以Ruby寫成,用戶端以Javascript開發。Urubatan最近對其進行了評價。與Rails注重按照習慣程式設計相反,Nitro更加靈活。Nitro支援開發基于Model-View-Controller的應用,同時支援非MVC、php風格的應用開發。Nitro使用xhtml檔案,并定制的Ruby标簽作為模闆系統。

  Nitro還使用了它自己的持久層,名為Og(ObjectGraph)。Og允許arbitrary Ruby對象的序列化。在attr_accessor中标記為Object(或Array或Hash)之後,引擎會序列化對象的YAML轉儲堆。Og同時支援任意對象圖。Og提供自動化資料庫進化功能:當Ruby類變更後,Og會進行自動檢測,同時改變對應的資料庫。有些人總是會忘掉ActiveRecord的Migration功能。

  Ramaze是一個存在了6個月的輕量級Ruby Web開發架構。它在建構時基于下列廣為人知的Ruby Web開發架構原則:

  ◆KISS原則(Keep It Super Simple)

  ◆POLS原則(最小驚訝原則:Principle Of Least Surprise)

  ◆子產品化設計

  ◆最小化依賴

  ◆文檔

  ◆開放式開發

  ◆BDD開發/執行個體

  Ramaze是MVC Web開發架構,使用自己名為Ezamar的模闆系統。但是你同樣可以使用Markaby、HAML、Liquid或ERB來替代Ezamar。Ramaze不提供預設的ORM(對象-關系映射),你可以使用你自己的選擇:ActiveRecord、Og...它支援諸如Cache等進階使用,web應用可以通過Mongrel或Evented Mongrel來搭建。你可以在Ramaze wiki上發現更多細節。

  Sinatra是一個剛開發了一個月的DSL web開發架構。Ron Evans對其進行了簡要評價。它與Rails的主要差别在于它不是基于Model-View-Controller模式的架構。Sinatra是基于最小化的DSL文法開發的,它的小型基礎核心中不包括諸如ActiveRecord這樣的子產品。通過使用get/post action定義,Sinatra具備動态路由定義功能。Ron指出,Sinatra不是為Robust web應用開發的,而是為了用來搭建小型的原型,其中的混合業務邏輯和展示層并不是問題。

  那這樣做有什麼好處呢?API實作、快速的最小化應用以及那些不需要Rails中的功能(比如ActiveRecord)的web應用開發。可以用來對面闆最小應用進行控制,或者是widget。

  與其他架構相比,IOWA在近三年的時間裡都不活躍。Cerise有一年的時間都沒有活躍,是以我們不會深入探讨它們。

  像Rails一樣,Nitro有其自己的完整核心,其他Ruby Web開發架構試圖越小越好,并允許使用者自由使用他們喜歡的ORM、模闆系統等等。即使這些架構可能缺乏文檔,甚至有些架構不具備這麼多的功能、流行程度、對Rails的使用等,它們仍然值得一看。