rails

rails

Web開發框架
Rails框架首次提出是在2004年7月,它的研發者是26歲的丹麥人DavidHeinemeierHansson。不同于已有複雜的Web開發框架,Rails是一個更符合實際需要而且更高效的Web開發框架。Rails結合了PHP體系的優點(快速開發)和Java體系的優點(程序規整),是目前應用最為廣泛的Ruby框架。因此,Rails在其提出後不長的時間裡就受到了業内廣泛的關注。RubyonRails是一個用于開發數據庫驅動的網絡應用程序的完整框架。Rails基于MVC(模型-視圖-控制器)設計模式。[1]
  • 中文名:
  • 外文名:rails
  • 别名:
  • 提出時間:2004年7月
  • 研發者:David Heinemeier Hansson
  • 前身:MVC

簡介

RubyonRails是一個用于開發數據庫驅動的網絡應用程序的完整框架。Rails基于MVC(模型-視圖-控制器)設計模式。從視圖中的Ajax應用,到控制器中的訪問請求和反饋,到封裝數據庫的模型,Rails為你提供一個純Ruby的開發環境。發布網站時,你隻需要一個數據庫和一個網絡服務器即可。

RubyOnRails是一個用于編寫網絡應用程序的軟件包.它基于一種計算機軟件語言Ruby,給程序開發人員提供了強大的框架支持.你可以用比以前少的多的代碼和短的多的時間編寫出一流的網絡軟件。

RubyOnRails的指導原則是”不要重複你自己”(Don’tRepeatYourself,或DRY).意思是說你寫的代碼不會有重複的地方.比如以往數據庫的接口往往是類似的程序代碼但是在很多地方都要重複用到.這無論是給編寫還是維護都造成了很大的代價.相反,RubyOnRails給你提供了絕大多數的支持,讓你隻需要短短的幾行代碼就可以實現強大的功能.而且,Rails提供了代碼生成工具,讓你甚至不需要編寫一行代碼就實現強大的管理程序.

RubyOnRails通過reflection和runtimeextension減少了對configuration文件的依靠,這和Java,C#語言的方向有很大不同,讓你減少了很多配置和部署的麻煩,但是性能上卻完全可以應付一般網站的需求.

Rails支持各類網絡服務器和數據庫。在服務器方面,我們推薦Apache、lighttpd或nginx代理至Mongrel(或者使用FastCGI)。數據庫方面,你可以采用MySQL、PostgreSQL、SQLite、Oracle、SQLServer、DB2、或其他任何我們支持的系統。Rails可以在各類操作系統上運行,不過我們建議采用基于unix的系統進行開發。

發展曆程

Rails3.0經過兩年的改進,終于發布了。社區聚集了1600多貢獻者一起齊心協力,使一切變得更加美好,更快,更清潔,更美麗。

在過去的兩年中,RubyonRails應用程序框架已經具備了一個由托管和服務提供商組成的一體式行業、一套功能廣泛且令人印象深刻的開發工具,還有各種在Ruby用語裡稱為gems和plug-ins的補充庫—可增強軟件的功能。例如EngineYard和Heroku就是兩個提供虛拟的、方便的Rails軟件托管的公司;Oink和Bullet分别用來顯示内存使用和性能;Clearance和Sunspot則用來提供現成的身份驗證和快速的索引式搜索。

自2007年Apple的Leopard上捆綁了RubyonRails出售以來,Rails社區也已不斷壯大。全球有衆多的Rails開發人員充滿活力、團結互助,并且渴望不斷地改進該軟件。可以毫不誇張地說,Rails的改進應歸功于社區,因為是程序員之間不斷的相互超越使得構建出的軟件越來越完善。如此不斷地循環,各個功能才得以從初期階段快速發展,逐漸變的實用、功能不斷強大并完善,最終成為不可或缺的工具。在很多情況下,社區認為最基本的gems和plug-ins都會保留到Rails核心中。

Rails的namedscopes(一個查詢快捷方式),可實現與nestedforms相同的功能。這是一個新增的功能,可取代以前的嘗試,并在相同的HTML表單中創建和編輯多個模型。實際上,對于Rails開發人員來說最困難的任務或許就是跟上變化的節奏。(幸運的是,目前有一些Ruby和RubyonRails的每周播客,這些播客會組織并呈現最新趨勢以及分享最佳實踐。)

Rails下一個主要的發布是Rails版本3,該版本繼續保持工具包的快速改進。與以往相同,該軟件仍然非常“固執”,即仍然偏向于約定優于配置。Rails的核心組件始終存在,即RESTful路徑、關系、驗證、模闆和數據庫抽象化。不過,這些組件的許多内部内容已經被重寫或者進行了改進。最明顯的并且很大程度上借用了Merb的理念的就是很多Rails的基本功能不再密切結合。例如,以前隻對Rails應用程序可用的數據驗證便捷功能現在成為獨立的組件,并且可以包含在VanillaRuby代碼中。如呈現部件和模闆等控制器功能,現在也是相互獨立的,并且可以嵌入到任一庫中。

在這篇文章中,您将會了解Rails3及其衆多變化和附加功能,以及如何從頭創建一個新的Rails3應用程序。

改進

Rails3中變動的數量太多,無法在此全部列出。要閱讀帶有補充資料的完整列表,請查詢Rails3發布通知。這裡僅介紹一些很可能會影響到開發人員的一些變動:

    一條命令可以控制所有事件。有了Rails3,無需在每一個應用程序中使用整套腳本(script/server、script/generate以及其他),使用一條命令即可取代其功能,該命令恰如其分地被命名為rails。例如,在以前需要鍵入./script/console的地方,您現在隻需鍵入railsconsole。

2.rails命令還可以像以前一樣生成新的應用程序。其運行方式依據其是否在現有的Rails應用程序中啟動而有所不同。

3.可為依賴性提供具體的解決方案。協調和解決gem依賴性是個棘手的問題。與可用gems的集合一樣,gem的修訂也是随系統的不同而有所變化。因為具有這樣的多樣化,所以很難廣泛地部署或共享一個Rails應用程序。Rails3引入了Bundler,這是一個專門用于管理依賴性的實用程序(因此無需再使用config.gem)。您可以在應用程序根目錄内一個名為Gemfile的目錄中聲明依賴性。Bundler将下載和存儲所有指定的gem。您甚至可以在應用程序中“打包”gem,以便阻止從外部存儲庫下載。

4.不帶查詢語句的查詢功能。一直以來,Rails已經可以充分運用特定于領域的語言(DSL)—考慮一下has_one或validates_numericality_of—有一個明顯的例外:數據庫查詢。可以确定地說,Rails的動态搜尋器便捷、易用,但混合使用選項哈希值如:conditions、:order和:limit非常常見,因為都是find_by_sql語句。

5.Rails3合并了relationalalgebra,這是專門設計用于表示查詢的DSL。基本命令包括project(用于選擇列)、where(用于表示條件)、join(用于指定關系)、take和skip(分别用于限定和抵消),以及group(用于聚集)等其他屬性。

6.用于模糊樣闆代碼的控制器。Rails控制器的核心操作—new、create、edit和update—通常不變,尤其是當控制器大部分用于CRUD操作時。事實上,控制器生成器的輸出./script/generatecontroller一般不需要進一步的修改就可以滿足需要。考慮到這些相似性,Rails3引入了Responder來進一步簡化代碼。例如下面是create操作全部所需的幾行代碼:

classPostsControllerrespond_to:html,:xml

defcreate

@post=Post.create(params[:post])

respond_with(@post)

end

end

在該代碼片段中,如果@post保存成功,respond_with(@post)将發送到show以顯示新的記錄,而假設對象的驗證失敗,則發送到new。這僅僅是一個小樣本。您可以在下一章節找到這些新功能的示例以及更多内容,例如從頭構建Rails3應用程序。

特點

全棧式的MVC框架

Rails是一個全棧式的MVC框架,換句話說,通過Rails可以實現MVC模式中的各個層次,并使它們無縫地協同運轉起來。

在實際開發一個MVC模式的Web應用項目時,如果使用Java開發,需要用到Struts(View層)、Hibernate(Model層)和Struts(Controller層)spring整合mvc3個框架,而且需要額外整合3個框架開發出的内容。而使用Ruby語言開發相同的項目時,隻需要用到Rails框架就可以完成。

約定優于配置

為了說明各個對象之間的關聯關系,一般的Web應用開發框架往往采用寫入XML配置文件的方法。這種方式雖然可以解決一些問題,但是卻帶來了管理上的混亂。

Rails對此的态度是約定優于配置,這意味着在Rails中不會出現XML配置文件。Rails使用Web應用多年來積累的各種常見約定(更具體地說是命名規則)來代替XML配置文件,而在Rails内部的映射與發現機制根據這些約定可以實現對象之間的關聯。在第1章中,通過Rails的映射與發現機制實現了數據表與Ruby對象之間的關聯。

更少的代碼

使用約定來代替XML配置文件說明Rails本身完成了大量的底層工作,這意味着使用更少的代碼來實現應用程序是極有可能的。此外,代碼量的縮減也減小了出現bug的可能性,降低了維護程序和升級程序的難度。

生成器

Rails使用的實時映射技術和元編程技術,免去了開發人員在開發過程中編寫大量樣闆文件代碼的煩惱。在少數需要使用樣闆文件代碼的時候,開發人員可以通過Rails内建的生成器腳本實時創建,而不再是通過手工編寫。Rails的這個特點可以使開發人員更專注于系統的邏輯結構,而不必為一些瑣碎的細節所煩擾。

零周轉時間

對已有的Web應用系統進行修改後,其一般需要經過配置、編譯、發布、重新設置、測試等一系列步驟才能投入使用,這明顯浪費了許多時間。而使用Rails開發Web應用系統,可以通過浏覽器即時查看程序運行結果,從而節約了大量的時間。

支架系統

Rails的支架系統可以自動為任何相關的數據庫表創建一套包含标準CRUD操作和前台視圖的系統。通過支架系統,開發人員可以方便快捷地操縱數據庫中的數據表。此外,Rails也允許開發人員使用自己設計的代碼或視圖來替換自動生成的代碼和視圖。

指導原則

Rails的指導原則是"不要重複你自己"(Don'tRepeatYourself,或DRY).意思是說你寫的代碼不會有重複的地方.比如以往數據庫的接口往往是類似的程序代碼但是在很多地方都要重複用到.這無論是給編寫還是維護都造成了很大的代價.相反,Rails給你提供了絕大多數的支持,讓你隻需要短短的幾行代碼就可以實現強大的功能.而且,Rails提供了代碼生成工具,讓你甚至不需要編寫一行代碼就實現強大的管理程序.Rails通過reflection和runtimeextension減少了對configuration文件的依靠,這和Java,C#語言的方向有很大不同,讓你減少了很多配置和部署的麻煩,但是性能上卻完全可以應付一般網站的需求.

相關詞條

相關搜索

其它詞條