複製鏈接
請複製以下鏈接發送給好友

rails

鎖定
Rails框架首次提出是在2004年7月,它的研發者是26歲的丹麥人David Heinemeier Hansson。不同於已有複雜的Web 開發框架,Rails是一個更符合實際需要而且更高效的Web開發框架。Rails結合了PHP體系的優點(快速開發)和Java體系的優點(程序規整),因此,Rails在其提出後不長的時間裏就受到了業內廣泛的關注。
外文名
rails
提出時間
2004年7月
研發者
David Heinemeier Hansson
前    身
MVC

rails基本情況

Ruby on Rails 是一個用於開發數據庫驅動的網絡應用程序的完整框架。Rails基於MVC(模型- 視圖- 控制器)設計模式。從視圖中的Ajax應用,到控制器中的訪問請求和反饋,到封裝數據庫的模型,Rails 為你提供一個純Ruby的開發環境。發佈網站時,你只需要一個數據庫和一個網絡服務器即可。
Ruby On Rails是一個用於編寫網絡應用程序的軟件包.它基於一種計算機軟件語言Ruby,給程序開發人員提供了強大的框架支持.你可以用比以前少的多的代碼和 短的多的時間編寫出網絡軟件。
Ruby On Rails的指導原則是”不要重複你自己”(Don’t Repeat Yourself, 或DRY).意思是説你寫的代碼不會有重複的地方.比如以往數據庫的接口往往是類似的程序代碼但是在很多地方都要重複用到.這無論是給編寫還是維護都造成 了很大的代價.相反,Ruby On Rails給你提供了絕大多數的支持,讓你只需要短短的幾行代碼就可以實現強大的功能.而且,Rails提供了代碼生成工具,讓你甚至不需要編寫一行代碼 就實現強大的管理程序.
Ruby On Rails通過reflection和runtime extension減少了對configuration文件的依靠,這和Java,C#語言的方向有很大不同,讓你減少了很多配置和部署的麻煩,但是性能上卻完全可以應付一般網站的需求.
Rails 支持各類網絡服務器和數據庫。在服務器方面,我們推薦Apache、 lighttpd 或 nginx 代理至 Mongrel (或者使用FastCGI)。數據庫方面,你可以採用MySQL、PostgreSQLSQLiteOracle、SQL Server、DB2、 或其他任何我們支持的系統。 Rails可以在各類操作系統上運行,不過我們建議採用基於unix的系統進行開發。 [1] 

rails發展歷程

Rails3.0經過兩年的改進,終於發佈了。社區聚集了1600多貢獻者一起齊心協力,使一切變得更加美好,更快,更清潔,更美麗。
在過去的兩年中,Ruby on Rails 應用程序框架已經具備了一個由託管和服務提供商組成的一體式行業、一套功能廣泛且令人印象深刻的開發工具,還有各種在 Ruby 用語裏稱為 gemsplug-ins 的補充庫 — 可增強軟件的功能。例如 Engine Yard 和 Heroku 就是兩個提供虛擬的、方便的 Rails 軟件託管的公司;Oink 和 Bullet 分別用來顯示內存使用和性能;Clearance 和 Sunspot 則用來提供現成的身份驗證和快速的索引式搜索。
自2007年Apple的Leopard上捆綁了Ruby on Rails出售以來,Rails 社區也已不斷壯大。全球有眾多的 Rails 開發人員充滿活力、團結互助,並且渴望不斷地改進該軟件。可以毫不誇張地説,Rails 的改進應歸功於社區,因為是程序員之間不斷的相互超越使得構建出的軟件越來越完善。如此不斷地循環,各個功能才得以從初期階段快速發展,逐漸變的實用、功能不斷強大並完善,最終成為不可或缺的工具。在很多情況下,社區認為最基本的 gems 和 plug-ins 都會保留到 Rails 核心中。Rails 的 named scopes(一個查詢快捷方式),可實現與 nested forms 相同的功能。這是一個新增的功能,可取代以前的嘗試,並在相同的 HTML 表單中創建和編輯多個模型。實際上,對於 Rails 開發人員來説最困難的任務或許就是跟上變化的節奏。(幸運的是,有一些 Ruby 和 Ruby on Rails 的每週播客,這些播客會組織並呈現最新趨勢以及分享最佳實踐。)
Rails 下一個主要的發佈是 Rails 版本 3,該版本繼續保持工具包的快速改進。與以往相同,該軟件仍然非常 “固執”,即仍然偏向於約定優於配置。Rails 的核心組件始終存在,即 RESTful 路徑、關係、驗證、模板和數據庫抽象化。不過,這些組件的許多內部內容已經被重寫或者進行了改進。最明顯的並且很大程度上借用了 Merb 的理念的就是很多 Rails 的基本功能不再密切結合。例如,以前只對 Rails 應用程序可用的數據驗證便捷功能現在成為獨立的組件,並且可以包含在 Vanilla Ruby 代碼中。如呈現部件和模板等控制器功能,現在也是相互獨立的,並且可以嵌入到任一庫中。

rails改進

Rails 3 中變動的數量太多,無法在此全部列出。要閲讀帶有補充資料的完整列表,請查詢 Rails 3 發佈通知。這裏僅介紹一些很可能會影響到開發人員的一些變動:
1. 一條命令可以控制所有事件。有了 Rails 3,無需在每一個應用程序中使用整套腳本(script/server、script/generate 以及其他),使用一條命令即可取代其功能,該命令恰如其分地被命名為 rails。例如,在以前需要鍵入 ./script/console 的地方,您現在只需鍵入 rails console。
2. rails 命令還可以像以前一樣生成新的應用程序。其運行方式依據其是否在現有的 Rails 應用程序中啓動而有所不同。
3. 可為依賴性提供具體的解決方案。協調和解決 gem 依賴性是個棘手的問題。與可用 gems 的集合一樣,gem 的修訂也是隨系統的不同而有所變化。因為具有這樣的多樣化,所以很難廣泛地部署或共享一個 Rails 應用程序。Rails 3 引入了 Bundler,這是一個專門用於管理依賴性的實用程序(因此無需再使用 config.gem)。您可以在應用程序根目錄內一個名為 Gemfile 的目錄中聲明依賴性。Bundler 將下載和存儲所有指定的 gem。您甚至可以在應用程序中 “打包” gem ,以便阻止從外部存儲庫下載。
4. 不帶查詢語句的查詢功能。一直以來,Rails 已經可以充分運用特定於領域的語言 (DSL) — 考慮一下 has_one 或 validates_numericality_of — 有一個明顯的例外:數據庫查詢。可以確定地説,Rails 的動態搜尋器便捷、易用,但混合使用選項哈希值如 :conditions、:order 和 :limit 非常常見,因為都是 find_by_sql 語句。
5. Rails 3 合併了 relational algebra,這是專門設計用於表示查詢的 DSL。基本命令包括 project(用於選擇列)、where(用於表示條件)、join(用於指定關係)、take 和 skip(分別用於限定和抵消),以及 group(用於聚集)等其他屬性。
6. 用於模糊樣板代碼的控制器。Rails 控制器的核心操作 —new、create、edit 和 update — 通常不變,尤其是當控制器大部分用於 CRUD 操作時。事實上,控制器生成器的輸出 ./script/generate controller 一般不需要進一步的修改就可以滿足需要。考慮到這些相似性,Rails 3 引入了 Responder 來進一步簡化代碼。例如下面是 create 操作全部所需的幾行代碼:
class PostsController respond_to :html, :xml
def create
@post = Post.create(params[:post])
respond_with(@post)
end
end
在該代碼片段中,如果 @post 保存成功,respond_with(@post) 將發送到 show 以顯示新的記錄,而假設對象的驗證失敗,則發送到 new。 這僅僅是一個小樣本。您可以在下一章節找到這些新功能的示例以及更多內容,例如從頭構建 Rails 3 應用程序。

rails程序特點

全棧式的MVC框架
Rails是一個全棧式的MVC框架,換句話説,通過Rails可以實現MVC模式中的各個層次,並使它們無縫地協同運轉起來。
在實際開發一個MVC模式的Web應用項目時,如果使用Java開發,需要用到Struts(View 層)、Hibernate(Model層)和Struts(Controller 層)spring 整合mvc 3個框架,而且需要額外整合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't Repeat Yourself, 或DRY).意思是説你寫的代碼不會有重複的地方.比如以往數據庫的接口往往是類似的程序代碼但是在很多地方都要重複用到.這無論是給編寫還是維護都造成了很大的代價.相反,Rails給你提供了絕大多數的支持,讓你只需要短短的幾行代碼就可以實現強大的功能.而且,Rails提供了代碼生成工具,讓你甚至不需要編寫一行代碼就實現強大的管理程序.Rails通過reflection和runtime extension減少了對configuration文件的依靠,這和Java,C#語言的方向有很大不同,讓你減少了很多配置和部署的麻煩,但是性能上卻完全可以應付一般網站的需求.
參考資料